Django博客功能实现—文章评论的显示
功能:
在打开文章之后,能在文章下面是显示文章的评论,有父级评论。
思路:
在文章详情的视图里面,获取这个文章的全部评论,得到显示列表,然后用模板显示出来。
步骤:
一,在views.py的文章详情中获取评论:
1 #文章详情
2 #blog/views.py
3 def article(request):
4 try:
5 # 获取评论信息
6 #查询指定文章的所有评论,按照id排序
7 comments = Comment.objects.filter(article=article).order_by('id')
8 #创建一个评论的空列表
9 comment_list = []
10 #遍历一篇文章中的所有评论
11 for comment in comments:
12 for item in comment_list:
13 #判断item中是否有"children_comment"属性,返回布尔值
14 if not hasattr(item, 'children_comment'):
15 #若无"children_comment"属性,则设置这个属性,属性的值为[]
16 setattr(item, 'children_comment', [])
17 #如果item和父级评论的值相等,则讲该遍历出来的文章添加到"children_comment"属性,然后跳出当前循环
18 if comment.pid == item:
19 item.children_comment.append(comment)
20 break
21 #如果父级评论为空,则讲给评论放到父级评论列表里面
22 if comment.pid is None:
23 comment_list.append(comment)
24 except Exception as e:
25 print e
26 logger.error(e)
27 return render(request, 'article.html', locals())
二、在模板中显示出来
#article.html
{% for comment in comment_list %} <a href='{{ comment.url }}'>{{ comment.username }}</a><a href="#comment-59418">{{ comment.date_publish | date:'Y-m-d H:i:s' }}</a>
<div><img alt='' src='{% static 'images/default.jpg' %}' class='avatar avatar-32 photo' height='' width='' /></div> <p>{{ comment.content }}</p>
</div>
</li>
{% for children_comment in comment.children_comment %}
<li id="comment-59542">
<div class="reply">
<div class="top"><a href="{{ children_comment.url }}" rel="external nofollow" class="url">{{ children_comment.username }}</a><span class="time"> @ <a href="#comment-59543" title="">{{ children_comment.date_publish | date:'Y-m-d H:i:s' }}</a></span></div>
<div><img alt="" src="{% static 'images/default.jpg' %}" class="avatar avatar-32 photo" height="" width=""></div> <div class="body">
{{ children_comment.content }} </div>
</div>
</li>
{% endfor %}
如此就能讲一个文章的评论显示出来
Django博客功能实现—文章评论的显示的更多相关文章
- Django博客功能实现—文章评论功能
功能:在A网页提交一个评论Forms_B,提交之后自动刷新页面,能够显示刚刚的画面思路:利用一个已经创建的表单,通过视图让其在网页中表现出来,填写玩信息之后提交,会提交到一个新的视图里面去做接受,接受 ...
- Django 博客单元测试:测试评论应用
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 评论应用的测试和博客应用测试的套路是一样的. 先来建立测试文件的目录结构.首先在 c ...
- django博客功能实现——标签功能
标签功能添加流程 0.功能概括 标签作为文章中的分类标记,会显示出该文章是关于哪一方面的文章,比如是关于python的还是关于django的. 当我们点击该标签的时候,会出现该博客中所有属于该标签的文 ...
- Django博客功能实现
开发环境:Python3.5.2和Django1.10.2 username: rootemail: 2016968116@qq.compassword: 123456liuqiuchen 现在我们进 ...
- Django(博客系统):文章内容使用django-ckeditor、文章简介使用django-tinymce
文章内容使用django-ckeditor 1)安装django-ckeditor pip install django-ckeditorpip install Pillow 2)在settings. ...
- django博客项目8:文章详情页
首页展示的是所有文章的列表,当用户看到感兴趣的文章时,他点击文章的标题或者继续阅读的按钮,应该跳转到文章的详情页面来阅读文章的详细内容.现在让我们来开发博客的详情页面,有了前面的基础,开发流程都是一样 ...
- 为hexo博客添加基于gitment评论功能
关于gitment gitment其实就是利用你的代码仓库的Issues,来实现评论.每一篇文章对应该代码仓库中的 一个Issues,Issues中的评论对应你的博客每篇文章中的评论.如果你是用git ...
- django博客项目6:Django Admin 后台发布文章
在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 ...
- Django博客开发实践,初学者开发经验
python,Django初学者,开发简易博客,做了一下笔记,记录了开发的过程,功力浅薄,仅供初学者互相 交流,欢迎意见建议.具体链接:Django博客开发实践(一)--分析需求并创建项目 地址:ht ...
随机推荐
- (Spring4 json入门)Spring4+SpringMVC+页面数据发送与接收(json格式)
jar包(Maven仓库): Spring4 jar包(Maven仓库): 在测试过程中我查看了网上的一些教程,但是那些教程都是在Spring3环境下的,Spring3和Spring4解析json需要 ...
- MongoDB常用操作--集合3
1.更新集合中的文档,语法如下: db.collection.update(criteria,objNew,upsert,multi) 参数说明: criteria:用于设置查询条件的对象 objNe ...
- 瞄准SMART目标
瞄准SMART目标 SMART代表具体的/可度量的/可实现的/相关的和时间可控的. 1.具体的 (一个目标任务应该是具体的/事物的具体化) 2.可度量的 (如何知道你何时完成?确贴的数字,度量具体 ...
- 浅谈HTML5单页面架构(三)—— 回归本真:自定义路由 + requirejs + zepto + underscore
本文转载自:http://www.cnblogs.com/kenkofox/p/4650310.html 不过,这一篇,我想进一步探讨一下这两个框架的优缺点,另外,再进一步,抛开这两个框架,回到本真, ...
- 2-1 git合并 打tag
tag常用命令(仅供参考): git tag -a V1.4 -m "1.4" 创建一个tag git tag 查看本地tag git tag -d V1.1 删除本地tag g ...
- JavaScript基本语法(五)
BOM 浏览器对象模型 BOM (浏览器对象模型),它提供了与浏览器窗口进行交互的对象. 一.window对象 Window对象表示整个浏览器窗口. 所有浏览器都支持 window 对象.它表示浏览器 ...
- GitHub学习心得之 分支操作
目录 前言 1. 一般的push和pull 2. 分支操作 前言 本文对Github的分支操作进行了总结, 主要基于以下文章: http://blog.csdn.net/guang11cheng/ar ...
- IOS开发基础知识--碎片5
二十三:addSubview和insertSubview 区别 addSubview 是将view加到所有层的最顶层 相当于将insertSubview的atIndex参数设置成view.subvie ...
- Windows 双网卡指定网络出口
主要命令: ipconfig route ping tracert 指定外网路由通过本地以太网连接出去 route add -p 0.0.0.0 mask 0.0.0.0 192.168.10 ...
- Android 热修复,插件式开发---基本知识
Android插件技术已经出来很久了,从包建强大大的那篇<Android插件化:从入门到放弃>出来以后,插件化技术的场景也明朗了. app插件牵涉到很多基础 1.app的启动流程 过程分析 ...