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 ...
随机推荐
- CSS侧边栏,ng-click定义选中事件
本篇小随笔,记录下侧边栏的写法和ng-click点击选中事件.因为这个工程不让引用jQuery.所以ng-click选中事件用了一个比较笨的方法实现的. 下面是HTML页面 按 Ctrl+C 复制代码 ...
- 动态加载js和css
开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法. 1.动态加载js 方法一:动态加载js文件 // 动态加载js脚本文件 function loadScript(url) { v ...
- 回溯法求n的全排列
代码如下: #include <iostream> #include <algorithm> #include <stdio.h> #include <cst ...
- HTML5标签
可以进行省略的标签 不允许写结束标记的标签:area(定义图像映射中的区域).base(为页面上的所有链接规定默认地址或默认目标).br.col(为表格中一个或多个列定义属性值).embed(定义嵌入 ...
- 网页端实现input数字输入框
实现input输入框只能输入数字的效果: <input type="text" name="" id="phoneNum" value ...
- 使用setTimeout模拟setInterval效果
由于现在部分浏览器基于对系统性能的优化,在使用setInterval的时候,在页面没有获得关注的状态,浏览器可以会自动将setInterval终端,等到该页面重新获得关注时再开启.这样就会使得一些基于 ...
- Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法
以Socket发送数据为例: 发送数据时候要声明:DataOutputStream os = new DataOutputStream(socket.getOutputStream()); 最近开发遇 ...
- iOS之ShareSDK实现分享、第三方登录等功能
(1)官方下载ShareSDK iOS 2.8.8,地址:http://sharesdk.cn/ (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDelegate中一般情况下有三 ...
- iOS简单实现毛玻璃效果
iOS8之后有一个类 UIVisualEffectView // 毛玻璃 UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMak ...
- Android自定义控件6--轮播图广告的实现
本文接着实现轮播图广告的监听滚动 本文地址:http://www.cnblogs.com/wuyudong/p/5920757.html,转载请注明源地址. 首先添加布局文件,实现小白点 shape_ ...