代码还没读完就踏上了修改功能的深坑。还好思路清晰,通过修改模板和视图,实现了专题模块
原论坛的模式是用户点击节点发帖,然后就归到节点的分类里面了。我需要一个功能,就是右侧需要一个专题区,管理员发帖的话需要显示在那里。为了尽量小的修改实现功能,我决定设置一个管理员节点,然后在视图调用数据库过滤出节点,就可以了。
------
那么问题出现了,既然是节点,所有用户都可以点击节点发帖,这岂不乱了?
于是,我打起了发帖框的主意,如果能使用什么方法,使普通用户点击这个节点时不显示发帖框,管理员点击显示发帖框,从而就实现了对一般用户隐藏,达成目的。所以我翻看了模板。原模板如下:
{% if user.is_authenticated %}
{% csrf_token %}
{% for field in form %}
{{ field.label_tag }}
{{ field }}
翻看用户的方法和模板的一些控制语句。找到了user.is_staff和ifnotequal两个很有用的东东。通过一些逻辑组合,就变成了如下的代码,实现了当用户未登录时显示请登录,登陆后如果是普通用户,在指定的父节点下,则不显示发帖框,如果是管理员则显示。
is_staff()可以判断用户是否可以登录后台
{% if user.is_authenticated %}
{% if user.is_staff %}
{% csrf_token %}
{% for field in form %}
{{ field.label_tag }}
{{ field }}