专栏首页深度应用[个人网站搭建]·Django增加评论功能(Python3)

[个人网站搭建]·Django增加评论功能(Python3)

[个人网站搭建]·Django增加评论功能(Python3)

个人主页--> https://xiaosongshine.github.io/

个人网站搭建github地址:https://github.com/xiaosongshine/djangoWebs

安装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模版标签获取,如下代码:

<div class="panel panel-default">
    <div class="panel-heading">
        <h4>评论列表</h4>
    </div>
 
    <div class="panel-body">
        {% get_comment_list for blog as comments %}
        {% for comment in comments %}
            <div class="blog_comment" name="F{{comment.id}}">
                <p class="comment_title">
                    #{{ comment.submit_date|date:"Y-m-d H:i"}} @ {{ comment.user_name }}:
                </p>
                <p class="comment_content">{{ comment.comment }}</p>
            </div>            
        {% empty %}
            <span>暂无评论</span>
        {% endfor %}
    </div>
</div>

get_comment_list模版标签的用法是for一个模版对象,as是重命名。变量得到的评论加载即可。

而评论提交表单,最主要的是提交的url和表单字段。同样也可以通过django_comments的模版标签处理,如下代码:

<h4>新的评论</h4>
{% get_comment_form for blog as blog_form %}
 
<form id="comment_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 }}
 
    {# 用户名字段,这个后面会修改为登录用户评论,无需填这个 #}
    <div class="control-group">
        <label class="control-label" for="id_name">名称: </label>
        <div class="controls">
            <input type="text" 
                   id="id_name" class="input-xlarge" name="name" 
                   placeholder="请输入您的用户名" 
                   value="{{ user.username }}" />
        </div>
    </div>
 
    {# 邮箱地址字段 #}
    <div class="control-group">
        <label class="control-label" for="id_email">邮箱: </label>
        <div class="controls">
            <input type="email"
                   id="id_email" class="input-xlarge" name="email" 
                   placeholder="请输入您的邮箱地址" 
                   value="{{ user.email }}" />
        </div>
    </div>
 
    {# 评论内容 #}
    <a name="newcomment" id="newcomment"></a>
    <div class="control-group">
        <label class="control-label" for="id_comment">评论: </label>
        <div class="controls">
            <textarea rows="6" 
                      id="id_comment" class="input-xlarge comment" name="comment" 
                      placeholder="请输入评论内容">
            </textarea>
        </div>
    </div>
 
    {# 防垃圾评论 #}
    <p style="display:none;">
        <label for="id_honeypot">如果你在该字段中输入任何内容,你的评论就会被视为垃圾评论。</label>
        <input type="text" name="honeypot" id="id_honeypot">
    </p>
 
    {# 表单按钮 #}
    <div class="controls">
        <div class="form-actions">
            <input class="btn btn-info" id="submit_btn" type="submit" name="submit" value="提交"/>
            <input type="hidden" name="next" value="{%url 'detailblog' blog.id%}"/>
        </div>
    </div>
 </form>

这一步需要注意的有两点

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.<input type="hidden" name="next" value="{%url 'detailblog' blog.id%}"/>其中的value="{%url 'detailblog' blog.id%}就是你要刷新的网页url,我的修改为了:

<input type="hidden" name="next" value="/details-{{show.id}}.html"/>

还有一个小技巧:可以通过{{ comments|length}}获取评论总数目,便于统计显示,我的实现:

<li><a href="#" class="icon fa-comment">{{ comments|length}}</a></li>

重启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

欢迎大家访问我的主页尝试一下,觉得有用的话,麻烦小小鼓励一下 ><

个人网站搭建github地址:https://github.com/xiaosongshine/djangoWebs 欢迎访问

参考:http://yshblog.com/blog/5

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [开发技巧]·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)

    在进行深度学习开发时,GPU加速可以提升我们开发的效率,速度的对比可以参照笔者这篇博文:[深度应用]·主流深度学习硬件速度对比(CPU,GPU,TPU)结论:通...

    小宋是呢
  • [知乎作答]·关于在Keras中多标签分类器训练准确率问题

    本文来自知乎问题 关于在CNN中文本预测sigmoid分类器训练准确率的问题?中笔者的作答,来作为Keras中多标签分类器的使用解析教程。

    小宋是呢
  • [python3 OpenCV3填坑之旅]解决图像数学运算后无法正确显示的问题

    最近用的OpenCV python3 开发场景识别的应用,遇到了在图像进行数学逻辑运算后无法真确显示的问题,问题代码如下:

    小宋是呢
  • github博客Hexo引流到微信

    相信有不少小伙伴都在github上创建了属于自己的博客,其中用Hexo的Next主题应该不少,那么,我们究竟该如何将博客的流量引流到微信呢?今天就来带你看一看。...

    健程之道
  • Django评论库

    查了一下,Django原本会自带一个评论库组件,而从1.6版本以后就没有自带了,需要自己安装。

    菲宇
  • Vue实战系列—评价组件的设计与实现(6)

    针对组件引用的图片可能产生变动性,我们将组件内的图片放入组件文件夹内,进行引用。使得组件更加便于维护。

    前端大彬哥
  • (5)打鸡儿教你Vue.js

    达达前端
  • 专栏:014:客官,你要的实战我给你.

    谢伟
  • 第33天:封装自己的class类

    半指温柔乐
  • 微信小程序在腾讯地图上选择定位

    微信小程序地图上选择位置 参考这位大神的,确实有效果。 做了一个考勤的小程序,当然,也是整体拿的https://github.com/tommenx/wxs...

    hotqin888

扫码关注云+社区

领取腾讯云代金券