点赞点踩功能
前端
- 录入文章数据,最本质的方式就是录入
html
文件标签 - 取消转义,在前端页面加一个过滤器: |safe
- 拷贝的点赞点踩,去掉点击事件,踩赞数换成文章对象中的对应字段
- 怎么判断点赞点踩?
- 点赞和点踩有不同的类名,添加一个公共类名action
- 给action绑定点击事件,然后根据类名区分点赞和点踩
- 只要是应用
auth
模块的用户,在登录成功之后执行auth.login
,保存登录状态,这样在任何能够拿到request对象的地方,都可以通过request.user
获取到当前登录用户对象 - 当前是在 article_detail页面,发送
ajax
请求,跳转的是专门处理点踩点赞的页面 -
ajax
请求,在后端提前定义一个字典,不管用不用的到,后面可能会定义别的容器类型,定义好之后,有可能会用
后端
先判断
ajax
,在判断post,定义字典-
判断是否登录,拿到文章,赞踩字段
因为拿到的赞或者踩字段是字符串,这里面需要用到
json
格式转一下-
python
和json
的转换可以通过json.JSONENCODE
进行查看,现在列出python json dict object list,tuple array str string int,float number True true False false None null
-
在拿到踩或者赞之后的逻辑:
- 判断当前文章是否是当前用户自己写的
- 判断是否点过(踩/赞)了
- 操作数据库(文章表,增加数据),变更记录
- 操作踩赞表,创建一个记录
- 写错误的逻辑,注意提示登录,加一个a标签,跳转到登录界面
- 把字典传给
ajax
的回调函数
评论功能
前端
- 拷贝评论样式,加一个
textarea
评论框样式 - 点踩点赞的图片与评论样式在同一行,因为有浮动,需要在div标签中设置clearfix,清除浮动
- 只有登录才能进行评论,所以要加一个判断,当用户没有评论时,用2个a标签,分别是登录和注册
后端
和点赞点踩类似,不过加了一个事务,简单的逻辑如下:
- 判断请求是不是
ajax
,是不是post
- 加字典,拿到文章id,评论内容
- 开启事务,更新文章表,新建评论表中的记录
- 更新字典,字典返回前端
ajax
回调函数
评论楼(跟评论)
前端
- 根据博客园的评论楼样式,只需要在
article_detail
中加div标签,然后包裹若干span标签样式,里面分别存楼数,时间,用户名,回复,外加一个p标签包裹评论内容。 - 提交评论,会有一个呈现的页面,DOM操作,临时渲染评论楼样式(主要就是用户名和评论内容,其他的信息不需要)
- 动态生成标签
- 将生成好的标签 添加到
ul
标签中
后端
- 在
article_detail
中获取评论列表,然后返回前端就好了
评论回复(子评论)
前端
- 用户点击回复按钮,发生了以下几件事情
- 自动获取点击的那一条评论的评论人用户名 @人名
- 将拼接好的人名自动放入
textarea
框中 并且自动换行 -
textarea
框自动聚焦
- 在for循环里面,识别标签的话用class,而不能用id,循环的话id相同,就不对了
- 点击回复按钮,应该拿到评论人的名字和评论的id(前者用于写在@后面,表示回复的是谁,后者需要根据parent_id判断当前是根评论还是子评论)
后端
- 子评论回复的时候,如何取消自带的@人名
- 根据之前拼接的形式,找到\n,并按照\n进行切割,把后面的部分存到数据库中。
- 当你回复了一个子评论后 如果不刷新页面 后续的评论都会变成子评论
- 在提交评论的点击事件中,将commentid置空,这样即使是子评论,赋值完成之后,一会变空。