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

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

 

个人主页--> 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

转载于:https://www.cnblogs.com/xiaosongshine/p/10615575.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一周工作60个小时并不值得骄傲,这是个问题!

本文由 极客范 - yesky 翻译自 Jeff Archibald。欢迎加入极客翻译小组&#xff0c;同我们一道翻译与分享。转载请参见文章末尾处的要求。当我们声称自己在这周&#xff0c;上周或是上个月超负荷地工作了多少时间时&#xff0c;一种自豪感便会油然而生。 我之所以这么说是因为…

DOM的那些事

到底调用函数时要不要加&#xff08;&#xff09;&#xff1f; 在html中&#xff0c;onclick后必须接字符串调用&#xff0c;而在js中则必须接函数进行调用。 addEventListener和click区别 onclick只是一个属性&#xff0c;且是唯一的。其只能绑定一个事件&#xff0c;容易在不…

解决 -- 代码没有问题时接口报错:Status Code: 404 Not Found

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我能确定这个工程的接口代码肯定没有问题&#xff0c;这时请求接口依旧报 404。 如&#xff1a; 经过多方检查 最终确认问题原因&…

java版开源工作流引擎ccflow从表数据数据源导入设置

为什么80%的码农都做不了架构师&#xff1f;>>> 关键字驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow .net开源工作流 从表数据导入设置 概要说明在从表的使用中我一般都会用到从数据库引入一些数据到表单中&#xff0c;这时候就需要有一个功能能够查询…

一周消息树:程序员想找好工作?那就学好Linux!

摘要&#xff1a;从一小众化的系统发展到今天在国际上支撑着绝大部分公司的重量级系统&#xff0c;Liunx现在被越来越多的公司重视。而Linux人才却没有跟上&#xff0c;为此&#xff0c;MongoDB公司的副总裁Matt Asay给软件开发者们一个建议&#xff1a;要学好Linux。 近期&…

读书笔记011:《伤寒论》- 手厥阴心包经

手厥阴心主起胸&#xff0c;属包下膈三焦宫&#xff0c;支者循胸出胁下&#xff0c;胁下连腋三寸同。仍上抵腋循臑内&#xff0c;太阴、少阴两经中&#xff0c;指透中冲支者别&#xff0c;小指次指络相通。此经少气原多血&#xff0c;是动则病手心热&#xff0c;肘臂挛急腋下肿…

支撑4.5亿活跃用户的WhatsApp架构概览

摘要&#xff1a;不顾谷歌CEO阻拦&#xff0c;WhatsApp最终以190亿美元的价格花落Facebook。能获如此天价与其月4.5亿的活跃用户是分不开的&#xff0c;同样不可或缺的还有支撑每日数百亿消息的高可靠架构。 【编者按】以190亿美元的价格出售给Facebook&#xff0c;交易谈判过…

注解驱动的 Spring cache 缓存介绍

概述 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Spring 3.1 引入了激动人心的基于注释&#xff08;annotation&#xff09;的缓存&#xff08;cache&#xff09;技术&#xff0c;…

如何用Linux命令行管理网络:11个你必须知道的命令

本文由 极客范 - jerrylee 翻译自 Chris Hoffman。欢迎加入极客翻译小组&#xff0c;同我们一道翻译与分享。转载请参见文章末尾处的要求。无论你是要下载文件、诊断网络问题、管理网络接口&#xff0c;还是查看网络的统计数据&#xff0c;都有终端命令可以来完成。这篇文章收…

10 张图带你深入理解Docker容器和镜像

此文中部分信息、图片需要 fan qiang , 如果未能正常显示&#xff0c;文末有原文连接 。【Kubernetes培训通知】DockOne将会于2018年5月18日在上海举办Kubernetes技术培训&#xff0c;培训内容包括&#xff1a;容器介绍、容器网络、Kubernetes架构基础介绍、安装、设计理念、架…

一个“Internal”牵扯出的代码泄露,阿里云独家回应

近日&#xff0c;阿里云云效平台被曝出现源代码泄露企业&#xff0c;涉及40家企业共200余项目&#xff0c;甚至波及用户隐私敏感数据。晚些时候&#xff0c;阿里云就此事作出回应&#xff0c;并在网站醒目标识并给出告警。今天&#xff0c;一篇题为《独家 | 阿里云出现源代码泄…

专访雷果国:从1.5K到18K 一个程序员的5年成长之路

摘要&#xff1a;上段时间CSDN博客上流传了一篇比较励志的博文&#xff0c;讲述了一个程序员从基础薄弱到入职心仪公司的5年成长经历&#xff0c;为了给那些待毕业或已毕业但对未来仍很迷茫的朋友指引前行的方向&#xff0c;CSDN专访了这篇博文的作者。 导语:今年三月份&#…

关于windows下的libtorch配置

关于windows下的libtorch配置 1.环境 Windows service 2012 R2/Windows10Cuda 9.0OpenCV3.4.1Libtorch1.0VS2017/VS20152.配置 第一步:CUDA 9.0cudnn7.5安装(也可以用CUDA8.0) 如果已经安装了cuda8.0及以上版本,可以忽略此步骤。 libtorch有cuda8.0 和cuda9.0的版本,为了与vs版…

解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题

这个问题有2种解决方法&#xff1a; 我的报错是&#xff1a;java.sql.SQLSyntaxErrorException: Table gaei_ms.gaei_work_task doesnt exist方法一&#xff1a; 转自&#xff1a;https://confluence.atlassian.com/fishkb/table-xxx-doesn-t-exist-error-with-mysql-server-30…

搭建webpack基础配置

搭建webpack基础步骤&#xff1a; 1.去官方网站下载node.js&#xff08;根据自己电脑的系统类型选择&#xff09; 2.安装node.js完成后打开cmd命令提示符&#xff1a; 出现版本号证明安装成功 3.cd到工程目录下 npm install -g vue-cli&#xff08;这里使用的是vue-cli脚手架安…

研究:多感官教学增强记忆 学习效率事半功倍

人们在记忆外部信息时&#xff0c;必须先要去接受这些信息&#xff0c;而接受信息的“通道”不止一个&#xff0c;有视觉、听觉、嗅觉、味觉、触觉等等。有多种感官参加的记忆叫做“多通道”记忆。图为台中一幼稚园户外写生活动。 生动的教学方法往往可以吸引大多数孩子&#…

330 div+css Experience

今天学习的div&#xff0c;感觉对编辑html更为方便快捷&#xff0c;但还是需要多练&#xff0c;多熟悉一下思路和逻辑方式 越来越感觉&#xff0c;代码不是重要的&#xff0c;重要的是方向和思路&#xff0c;am的float clearfloat 及属性&#xff0c;还有overflow 溢出的三个属…

时间序列的平稳性检验方法汇总

时间序列平稳性检验方法&#xff0c;可分为三类&#xff1a; 图形分析方法 简单统计方法 假设检验方法 一、图形分析方法 可视化数据 可视化数据即绘制时间序列的折线图&#xff0c;看曲线是否围绕某一数值上下波动&#xff08;判断均值是否稳定&#xff09;&#xff0c;看…

tcp的发送端一个小包就能打破对端的delay_ack么?

3.10内核&#xff0c;反向合入4.9的bbr。 最近分析bbr的时候&#xff0c;收集了线上的一些报文&#xff0c;其中有一个疑问一直在我脑海里面&#xff0c;如下&#xff1a; 本身处于delay_ack状态的客户端&#xff0c;大概40ms回复一个delay_ack&#xff0c;当收到一个490字节的…

Git 诞生记

你可能有过这样的经历&#xff1a;在 debug 的时候这里加一句&#xff0c;那里减一句&#xff0c;顺便改改参数&#xff0c;不一会你的程序就从一个 bug 增加到了无数个 bug 。最重要的是&#xff0c;你完全想不起来自己到底改了几个地方&#xff0c;原来的程序到底长什么样子了…