前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目阶段之flask(四)

项目阶段之flask(四)

作者头像
小闫同学啊
发布2019-07-18 12:55:43
6240
发布2019-07-18 12:55:43
举报
文章被收录于专栏:小闫笔记小闫笔记

1.父评论数据展示

2.获取用户对评论的赞(难点)

1/添加is_like记录一下点赞,

2/先找到用户点赞过的评论编号,然后获取用户所有点赞过的评论编号

3/判断用户是否有对评论点过赞

if 用户需要登录 and 该评论编号 in 用户点赞过的评论编号里面

3.点赞取消点赞后端实现

操作思路:

1/判断用户是否登录

2/获取参数

3/参数校验,为空校验

4/操作类型进行校验

5/通过评论编号查询评论对象,并且判断是否存在

6/根据操作类型点赞&取消点赞

判断用户是否有对该评论点过赞,

如果没有的话创建点赞对象,添加到数据库中(虽然前面我们设置了自动提交,但是我们还是手动提交一下,因为自动提交是在所有的视图函数走完之后进行提交,会有延迟,还有一种情况就是用户暴力点赞测试,导致提交不及时)

如果点赞,删除用户点赞,然后点赞数量减一

7/返回响应

4.点赞数量处理(难点)

1/如果该用户没有点赞,那么图标显示灰色,如果该用户进行了点赞,那么图标变亮,如果按下取消点赞.

2/监听到点赞的事件,那么点赞的个数+1,给按钮加上属性,变亮;监听到取消点赞事件,那么点赞的个数-1,给按钮取消属性,变灰

3/图标后面如果是没有人点赞的时候,显示"赞";如果从数据库中查找出点赞数量,那么显示点赞的个数.

5.用户蓝图创建页面渲染

蓝图三部曲

1/创建用户蓝图对象

profile_blue = Blueprint("profile",__name__,url_prefix="/user")

2/装饰视图函数

@profile_blue.route('/info')

3/将用户蓝图注册到app中

在导入的时候,要注意导入蓝图在注册的前面,不能在这个文件一开始就导入,因为容易造成循环导入

app.register_blueprint(profile_blue)

6.用户中心模板继承,数据展示

需要继承基类,然后改写其中部分数据

开头写{% extends '基类模板地址' %}

1/重写标题部分

2/重写script部分

3/重写正文部分

4/因为用户中心没有热门新闻的排行,因此我们需要将这一部分取消,只需要重写基类的rank部分,然后内容不填,即可取消

7.用户信息修改和展示

操作流程:

1/判断请求方式,如果是get请求

2/携带用户数据,渲染页面

3/如果是post请求

4/获取参数

5/校验参数,为空校验

6/修改用户的数据

7/返回响应

接口文档:

请求路径: /user/base_info

请求方式:GET,POST

请求参数:POST请求有参数,nick_name,signature,gender

返回值:errno,errmsg

参数解释

参数名

类型

是否必须

参数说明

nick_name

string

昵称

signature

string

签名

gender

string

性别,MAN/WOMAN

返回值解释:

参数名

类型

是否必须

参数说明

error

int

错误码

errmsg

String

错误信息

8.用户图片上传

操作流程:

1/判断请求方式:

2/如果是get请求,携带用户的数据,渲染页面

3/如果是post请求,获取参数

4/校验参数,为空校验

5/上传头像,判断图片是否上传成功

6/将图片设置到用户对象,

7/返回响应

接口文档:

请求路径: /user/pic_info

请求方式:GET,POST

请求参数:无, POST有参数,avatar

返回值:GET请求: user_pci_info.html页面,data字典数据, POST请求: errno, errmsg,avatar_url

参数解释:

参数名

类型

是否必须

参数说明

avatar

file

头像

GET返回值解释:

参数名

类型

是否必须

参数说明

render_template

页面

渲染页面

data

字典

用户字典

data内容描述:

参数名

类型

是否必须

参数说明

user_info

list列表

渲染到页面的字典数据

POST返回值解释:

参数名

类型

是否必须

参数说明

error

int

错误码

errmsg

String

错误信息

data

字典

头像字典

data内容描述:

参数名

类型

是否必须

参数说明

avatar_url

string

用户头像

9.七牛云工具封装

图片存储:

1/自己搭建文件存储系统,比如使用FastDFS

1.需要自己来维护图片的名字

用户A,图片A

用户B,图片A

如果用户A,B的图片名字一样的,但是内容不一样,后上传的覆盖先上传的

2.用户A,图片A

用户B,图片B

如果用户A,B用户上传的图片名字不一样的,但是内容一样,如果保存两份,就浪费存储空间

2/使用第三方的工具SDK

特点:

1.可以节省自己的存储空间

2.七牛云可以维护我们的图片名字,自动去重

七牛云的使用

1/注册,创建直接的图片存储空间

2/安装扩展包pip install qiniu

3/将官方的文档全部拷贝到我们的项目中

10.用户中心修改密码页面功能

操作流程:

1/判断请求方式,如果是get请求

2/直接渲染页面

3/如果是post请求,获取参数

4/校验参数,为空检验

5/判断老密码是否正确

6/设置新密码

7/返回响应

接口文档:

请求路径: /user/pass_info

请求方式:GET,POST

请求参数:GET无, POST有参数,old_password, new_password

返回值:GET请求: user_pass_info.html页面,data字典数据, POST请求: errno, errmsg

POST参数解释:

参数名

类型

是否必须

参数说明

old_password

string

旧密码

new_password

string

新密码

GET返回值解释:

参数名

类型

是否必须

参数说明

render_template

页面

渲染页面

POST返回值解释:

参数名

类型

是否必须

参数说明

error

int

错误码

errmsg

String

错误信息

11.我的收藏新闻获取

操作流程:

1/获取参数,p

2/参数类型转换,方便我们做分页查询

3/分页查询收藏的新闻

4/获取分页对象属性,总页数,当前页,当前页对象列表

5/将对象列表,转成字典列表

6/拼接数据,渲染页面

接口文档:

请求路径: /user/ collection

请求方式:GET

请求参数:p(页数)

返回值: user_collection.html页面

参数解释:

参数名

类型

是否必须

参数说明

p

int

页数

返回值解释:

参数名

类型

是否必须

参数说明

render_template

页面

渲染页面

get请求中没有请求体,我们获取参数的时候不能利用data了,而是利用ajax的传递,获取参数request.args即可

script,link和image标签等都是一个get请求

12.新闻发布界面展示

操作流程:

1/判断请求方式,如果是get,

2/携带分类数据渲染页面

3/如果是post,获取参数

4/校验参数,为空校验

5/上传图片,判断是否上传成功

6/创建新闻对象设置属性,

7/保存到数据库

8/返回响应

接口文档:

请求路径: /user/news_release

请求方式:GET,POST

请求参数:GET无, POST ,title, category_id,digest,index_image,content

返回值:GET请求,user_news_release.html, data分类列表字段数据, POST,errno,errmsg

GET返回值解释:

参数名

类型

是否必须

参数说明

render_template

页面

渲染页面

data

字典

分类字典

POST参数解释:

参数名

类型

是否必须

参数说明

titile

string

新闻标题

category_id

int

新闻分类

digest

string

新闻摘要

index_image

file

索引图片

content

string

新闻内容

POST返回值解释:

参数名

类型

是否必须

参数说明

error

int

错误码

errmsg

String

错误信息

小知识点

1/当我们不知道request后面从哪里获取数据的时候,我们可以断点调试,打印request,然后在打印的菜单里可以看那个参数里面携带了数据,比如args里面有数据,那么就直接取args就好了,如果是files有数据,那么我们就获取files的数据就好了.

2/了解:ajaxSubmit属于表单提交,采用这种方式就是为了方便我们对富文本的处理

3/all([表达式1,表达式2.....])

只有所有的表达式为True的时候,那么返回的才是True,否则都是False

4/子评论显示有两种方式,一种是子评论显示在上面,父评论显示在下面(虎扑,斗鱼)

另一种是父评论显示在上面,子评论显示在下面(朋友圈的样式)

优质文章推荐:

公众号使用指南

redis操作命令总结

前端中那些让你头疼的英文单词

Flask框架重点知识总结回顾

项目重点知识点详解

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.父评论数据展示
  • 2.获取用户对评论的赞(难点)
  • 3.点赞取消点赞后端实现
  • 4.点赞数量处理(难点)
  • 5.用户蓝图创建页面渲染
  • 6.用户中心模板继承,数据展示
  • 7.用户信息修改和展示
  • 8.用户图片上传
  • 9.七牛云工具封装
  • 10.用户中心修改密码页面功能
  • 11.我的收藏新闻获取
  • 12.新闻发布界面展示
  • 小知识点
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档