django 无限层级的评论
一、摘要
拓展 django 官方的评论库,为评论提供无限层级的支持。
二、demo演示
访问链接:
https://github.com/zmrenwu/django-mptt-comments
下载完整代码,这里面有提供一个demo,文件夹就是example
安装依赖
安装根目录下的2个txt文件
pip3 install -r requirements.txt
pip3 install -r requirements_test.txt
使用Pycharm打开example,生成数据库
python makemigrations
python manage.py migrate
启动django 项目
访问页面:
http://127.0.0.1:8000/
效果如下:

添加文章
使用客户端,打开db.sqlite3文件,打开表blog_post,添加一条记录:

刷新页面,效果如下:

点击测试,进入评论页面

输入表单数据,会跳转页面
http://example.com/posts/1#c1
重新访问首页,点击测试
在提交按钮下面,就会显示评论。

点击reply,回复一下

再次返回首页,点击测试,评论效果如下:

点击2楼后面的reply,回复一下

再次返回首页,点击测试,评论效果如下:

回复3楼

4级评论如下:

还可以再次回复,这里就不演示了。
django_mptt_comments_mpttcomment 表记录了评论信息

templates 是模板目录,可以根据需要,将页面调整的好看一些。
本文参考链接:
https://github.com/zmrenwu/django-mptt-comments
django 无限层级的评论的更多相关文章
- js treeData 树形数据结构 无限层级(转载)
js实现无限层级树形数据结构(创新算法) 转载:https://blog.csdn.net/Mr_JavaScript/article/details/82817177 由于做项目的需要,把一个线性数 ...
- SQL查询无限层级结构的所有下级,所有上级
无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的所有下级或所有上级,使用WITH AS,UNION ALL 查询 1.查询Id为1所有的下级 WITH T AS( ...
- 简单叨叨bootstrap按钮无限层级下拉菜单的实现
0.写在前面的话 最近看书都懈怠了,又正值新项目,虽说并不是忙得不可开交,好吧我老实交待,我就是偷懒了其实,博客也没更.言归正传,对于前端的不熟悉现在确实是个让我头疼的事情,以至于一些功能要在网络上漫 ...
- Php无限层级并显示层级数
今天在处理递归无限层级菜单时,遇到一个稍微烧脑的问题,如何显示当前节点所在的层级数.废话不多说,我们先看个直观的无限层级: <?php // 这里的arr是直接从数据库取出的,仅作为测试数据 $ ...
- WebAPI增加Area以支持无限层级同名Controller
原文:WebAPI增加Area以支持无限层级同名Controller 微软的WebAPI默认实现逻辑 默认实现中不支持同名Controller,否则在访问时会报HttpError,在网上找到了各种路由 ...
- java中实现无限层级的树形结构
本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...
- django中的多级评论
需求分析 一般论坛中有评论和子评论,这样很容易就成了一个评论树,比如以下情况,先看数据结构: #nid,评论内容,跟帖对象(None为根评论) (1, '111', None), (2, '222', ...
- Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...
- django 使用多说 评论系统
效果图 方法:登录多说网站,创建站点.然后有下面的提示 ************************************************* 复制以下代码,并粘帖到您网页代码<bo ...
随机推荐
- 【概率DP】$P2059$ 卡牌游戏
链接 题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家 ...
- for循环的嵌套之小星星。
for循环中如何打印出五行五列的小星星呢? 很明显行列的形式需要用到循环嵌套. 外循环控制行: var str = "" ; for(var i= 1; i <= 5; i ...
- JPA批量插入优化
遇到一个需求是excel数据导入,一次大概会批量插入几万的数据.写完一测奇慢无比. 于是开始打日志,分析代码,发现是插入数据库的时候耗时很长,发现是spring data jpa的原因. 翻看jpa的 ...
- Instance Segmentation with Mask R-CNN and TensorFlow
Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...
- SpringBoot上传文件到本服务器 目录与jar包同级问题
目录 前言 原因 实现 不要忘记 最后的封装 Follow up 前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传 ...
- python: isdigit int float 使用
>>> num1 = '2.0' >>> print num1.isdigit() False >>> num2 = ' >>> ...
- 使用MeadCo's ScriptX控件做WEB打印
官方网址:http://www.meadroid.com/scriptx/index.asp MeadCo's ScriptX控件有两种使用方式,一种是做为免费版本使用,一种是做为收费版本使用,免费版 ...
- 解析生效测试方法 执行命令 ping 域名 得不到 IP 主要有如下几个原因:
https://help.aliyun.com/knowledge_detail/39834.html dig https://cloud.tencent.com/document/product/3 ...
- git clone或者git clone时遇到gnutls_handshake() failed: An unexpected TLS packet was received.如何处理?
答: 直接将https修改为http即可, 如: $ git clone https://github.com/Jello_Smith/my-example.git -> git clone ...
- vue重置表单数据
Object.assign(this.$data, this.$options.data()) // 全部重置 Object.assign(this.$data.form, this.$options ...