[个人网站搭建]·Django增加评论功能
安装django插件
pip install django-contrib-comments
配置settings.py
INSTALLED_APP=(
#...,
'django_comments',
'django.contrib.sites',
)
SITE_ID = 1
在INSTALLED_APP添加django_comments和django.contrib.sites两个应用。
在外部添加 SITE_ID=1。
django的评论库是一个站点,所以需要添加sites的应用并设置当前django工程的站点id=1
更新数据库
python manage.py migrate
配置urls.py
在 urlpatterns 中添加
path(r'^comments/', include('django_comments.urls')),
修改前端页面显示评论列表和评论提交表单
接着,修改前端页面显示评论列表和评论提交表单。这些需要使用django_comments的模版标签,在使用标签之前导入加载:
{# 导入评论库模块的模版标签 #}
{% load comments %}
评论列表可以通过django_comments的get_comment_list模版标签获取,如下代码:
评论列表
{% get_comment_list for blog as comments %}
{% for comment in comments %}
{% empty %}
暂无评论
{% endfor %}
get_comment_list模版标签的用法是for一个模版对象,as是重命名。变量得到的评论加载即可。
而评论提交表单,最主要的是提交的url和表单字段。同样也可以通过django_comments的模版标签处理,如下代码:
新的评论
{% get_comment_form for blog as blog_form %}
class="form-horizontal"
action="{% comment_form_target %}"
method="post"
>
{% csrf_token %}
{# 必须的字段 #}
{{ blog_form.object_pk }}
{{ blog_form.content_type }}
{{ blog_form.timestamp }}
{{ blog_form.site }}
{{ blog_form.submit_date }}
{{ blog_form.security_hash }}
{# 用户名字段,这个后面会修改为登录用户评论,无需填这个 #}
名称:
id="id_name" class="input-xlarge" name="name"
placeholder="请输入您的用户名"
value="{{ user.username }}" />
{# 邮箱地址字段 #}
邮箱:
id="id_email" class="input-xlarge" name="email"
placeholder="请输入您的邮箱地址"
value="{{ user.email }}" />
{# 评论内容 #}
评论:
id="id_comment" class="input-xlarge comment" name="comment"
placeholder="请输入评论内容">
{# 防垃圾评论 #}
如果你在该字段中输入任何内容,你的评论就会被视为垃圾评论。
{# 表单按钮 #}
这一步需要注意的有两点
1.{% get_comment_form for blog as blog_form %} {% get_comment_list for blog as comments %}中blog就是你的文章内容,我的主页用的是show我就改为了:
{% get_comment_form for show as blog_form %} {% get_comment_list for show as comments %}
2.其中的value="{%url 'detailblog' blog.id%}就是你要刷新的网页url,我的修改为了:
还有一个小技巧:可以通过{{ comments|length}}获取评论总数目,便于统计显示,我的实现:
{{ comments|length}}重启Uwsgi和Nginx
修改Django文件和其它配置文件之后,一定要重启Uwsgi和Nginx,不然不生效。
Uwsgi和Nginx重启方法:
#查看Uwsgi进程
ps -ef|grep uwsgi
#用kill方法把uwsgi进程杀死,然后启动uwsgi
killall -9 uwsgi
#启动方法
uwsgi -x mysite.xml
#Nginx平滑重启方法
/usr/local/nginx/sbin/nginx -s reload
效果展示
Please Enjoy Yourself
欢迎大家访问我的主页尝试一下,觉得有用的话,麻烦小小鼓励一下 ><
#{{ comment.submit_date|date:"Y-m-d H:i"}} @ {{ comment.user_name }}:
{{ comment.comment }}