Flask学习笔记 评论部分第二部分
2017-08-19 16:32
225 查看
接第一部分,这次主要介绍如何实现管理员管理评论的功能。
具体逻辑如下:在某个页面显示所有的评论,这个页面需要有权限的用户才能访问。创建一个disable按钮,点击按钮可以改变评论的disabled属性,根据disabled属性的True或者False来控制是否禁用评论。
看到这里脑海中已经有些东西浮现上来了:首先用一个视图函数和一个模板来呈现所有的评论,其中可以加一个分页功能。然后再用两个视图函数(一个显示,一个不显示)来决定是否显示评论,并在评论中增加一个按钮来指向这两个个视图函数。当然,以上这些功能在执行以前都要对用户的身份进行检查。
想完这些之后就要开始写代码了,首先是在某页面中显示所有评论。
一个很常见的分页视图函数,渲染方式和之前的方法大同小异,唯一不同的地方就是加入了disable和enable按钮,并且被禁用的评论的显示。
还有一点要说一下,我们之前在comment部分中曾经使用过_comments.html这种模块化的模板,这个模板本身是不限制用户身份的,如果我们在这个模板中添加disable和enable按钮,直接将其应用在我们的moderate视图函数中。普通用户在评论页面也会看到disable和enable按钮(虽然他们无法使用这个功能),这是不合适的。但是我们又想省劲,不想再写一个显示评论的模板来实现我们的功能,所以我们这里再设置一个变量moderate来控制这个过程。
首先在moderate.html中加这么一句:
然后在_comments.html中的for循环里添加按钮功能:
逻辑:已被禁用的评论就显示enable按钮(解禁),反之同理。
然后再在_comments.html中在评论内容的部分(div class=”comment-body”)进行一个逻辑控制:
最后就是禁用和解禁功能(disable,enable)所对应的视图函数啦:
这个也没什么好解释的,就是通过id抓到目标评论→修改评论的disabled值→更新数据库→返回文章所在的页(page)。
评论部分也结束了,接下来就是补一下之前的内容。
狗书里下一章是rest相关的一些东西,还是不太理解,感觉需要点项目练练。话说有大神带我做项目么。。
具体逻辑如下:在某个页面显示所有的评论,这个页面需要有权限的用户才能访问。创建一个disable按钮,点击按钮可以改变评论的disabled属性,根据disabled属性的True或者False来控制是否禁用评论。
看到这里脑海中已经有些东西浮现上来了:首先用一个视图函数和一个模板来呈现所有的评论,其中可以加一个分页功能。然后再用两个视图函数(一个显示,一个不显示)来决定是否显示评论,并在评论中增加一个按钮来指向这两个个视图函数。当然,以上这些功能在执行以前都要对用户的身份进行检查。
想完这些之后就要开始写代码了,首先是在某页面中显示所有评论。
@main.route('/moderate') @login_required #感觉这句有点多余 @permission_required(Permission.MODERATE_COMMENTS) def moderate(): page = request.args.get('page',1,type=int) pagination = Comment.query.order_by(Comment.timestamp.desc()).paginate(page,per_page=20,error_out=False) comments = pagination.items return render_template('moderate.html',comments=comments,pagination=pagination,page=page)
一个很常见的分页视图函数,渲染方式和之前的方法大同小异,唯一不同的地方就是加入了disable和enable按钮,并且被禁用的评论的显示。
还有一点要说一下,我们之前在comment部分中曾经使用过_comments.html这种模块化的模板,这个模板本身是不限制用户身份的,如果我们在这个模板中添加disable和enable按钮,直接将其应用在我们的moderate视图函数中。普通用户在评论页面也会看到disable和enable按钮(虽然他们无法使用这个功能),这是不合适的。但是我们又想省劲,不想再写一个显示评论的模板来实现我们的功能,所以我们这里再设置一个变量moderate来控制这个过程。
首先在moderate.html中加这么一句:
{% set moderate=True %}
然后在_comments.html中的for循环里添加按钮功能:
... {% if moderate %} {% if comment.disbled %} <a class="btn btn-default btn-xs" href={{ url_for('main.moderate_enable',id=comment.id,page=page) }}>Enable</a> {% else %} <a class="btn btn-default btn-xs" href={{ url_for('main.moderate_disable',id=comment.id,page=page) }}>Enable</a> {% endif %} {% endif %}
逻辑:已被禁用的评论就显示enable按钮(解禁),反之同理。
然后再在_comments.html中在评论内容的部分(div class=”comment-body”)进行一个逻辑控制:
{% if comment. a229 disabled %} <p><i>该评论已被删除</i></p> {% endif %} {% if moderate or not comment.disabled %} {% if comment.body_html %} {{ comment.body_html | safe }} {% else %} {{ comment.body }} {% endif %} {% endif %}
最后就是禁用和解禁功能(disable,enable)所对应的视图函数啦:
@main.route('/moderate/enable/<int:id>') @login_required @permission_required(Permission.MODERATE_COMMENTS) def moderate_enable(id): comment = Comment.query.get_or_404(id) comment.disabled = False db.session.add(comment) return redirect(url_for('main.moderate',page=request.args.get('page',1,type=int)))
这个也没什么好解释的,就是通过id抓到目标评论→修改评论的disabled值→更新数据库→返回文章所在的页(page)。
评论部分也结束了,接下来就是补一下之前的内容。
狗书里下一章是rest相关的一些东西,还是不太理解,感觉需要点项目练练。话说有大神带我做项目么。。
相关文章推荐
- Java基础学习笔记 第二部分 part 1
- VoIP学习笔记第二部分:语音编码
- C++学习笔记【第二部分第十章:泛型算法】
- C++学习笔记【第二部分第十二章:动态内存】
- (2011.09.25)《C++ Primer》第二部分学习笔记汇总——容器与算法
- IOS学习笔记之四:Foundation Kit详解(第二部分)
- 吴恩达深度学习课程第二部分笔记要点
- Flask学习笔记 用户评论(comment) 第一部分
- 鸟哥linux基础版学习笔记——《第二部分 Linux 文件、目录与磁盘格式》
- 《Python学习手册》学习笔记(20)之第20章迭代和解析,第二部分(关键词:编程语言/Python/迭代/解析)
- Java基础学习笔记 第二部分 part 2
- JZ2440学习笔记,第二部分,移植uboot2015支持JZ2440的nor flash
- Java学习第四天笔记-第二部分
- Linux 学习笔记 -- 第二部分 Linux 文件、目录与磁盘格式 -- 第7章 Linux 文件与目录管理
- Java基础学习笔记 第二部分 part 3
- JAVA新手学习笔记——Java实战经典(李兴华)第二部分C
- Linux 学习笔记 -- 第二部分 Linux 文件、目录与磁盘格式 -- 第8章 Linux 磁盘与文件系统管理
- Python学习笔记-Day03 -第二部分(双向队列-deque和单向队列Queue)
- 算法学习笔记----第二部分:排序和顺序统计量----第6章、堆排序
- JAVA新手学习笔记——JAVA实战经典(李兴华)第二部分B