一、摘要

拓展 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 无限层级的评论的更多相关文章

  1. js treeData 树形数据结构 无限层级(转载)

    js实现无限层级树形数据结构(创新算法) 转载:https://blog.csdn.net/Mr_JavaScript/article/details/82817177 由于做项目的需要,把一个线性数 ...

  2. SQL查询无限层级结构的所有下级,所有上级

    无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的所有下级或所有上级,使用WITH AS,UNION ALL 查询 1.查询Id为1所有的下级 WITH T AS( ...

  3. 简单叨叨bootstrap按钮无限层级下拉菜单的实现

    0.写在前面的话 最近看书都懈怠了,又正值新项目,虽说并不是忙得不可开交,好吧我老实交待,我就是偷懒了其实,博客也没更.言归正传,对于前端的不熟悉现在确实是个让我头疼的事情,以至于一些功能要在网络上漫 ...

  4. Php无限层级并显示层级数

    今天在处理递归无限层级菜单时,遇到一个稍微烧脑的问题,如何显示当前节点所在的层级数.废话不多说,我们先看个直观的无限层级: <?php // 这里的arr是直接从数据库取出的,仅作为测试数据 $ ...

  5. WebAPI增加Area以支持无限层级同名Controller

    原文:WebAPI增加Area以支持无限层级同名Controller 微软的WebAPI默认实现逻辑 默认实现中不支持同名Controller,否则在访问时会报HttpError,在网上找到了各种路由 ...

  6. java中实现无限层级的树形结构

    本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...

  7. django中的多级评论

    需求分析 一般论坛中有评论和子评论,这样很容易就成了一个评论树,比如以下情况,先看数据结构: #nid,评论内容,跟帖对象(None为根评论) (1, '111', None), (2, '222', ...

  8. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级

    在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...

  9. django 使用多说 评论系统

    效果图 方法:登录多说网站,创建站点.然后有下面的提示 ************************************************* 复制以下代码,并粘帖到您网页代码<bo ...

随机推荐

  1. JavaScript sort函数

    默认排序法则: 按照String类型ASCII码大小排序 如果要倒序排序,我们可以把大的数放前面: var arr = [10, 20, 1, 2]; arr.sort(function (x, y) ...

  2. 线程休眠只会用Thread.sleep?那你就弱爆了!

    线程休眠是 Java 开发经常会用到的一个手段,就是让当前线程睡一会儿,睡醒之后再继续运行. 咱大多数程序员,多线程虽然学得不好,但线程休眠,无人不知,无人不晓,也都会用,不就是用 Thread.sl ...

  3. mongo helper

    import datetime import pymongo import click # 数据库基本信息 db_configs = { 'type': 'mongo', 'host': '127.0 ...

  4. [Beta]Scrum Meeting#7

    github 本次会议项目由PM召开,时间为5月12日晚上10点45分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客整理文档 撰写博客整理文档 swoip 为适应新功能调整布局 ...

  5. JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog   对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...

  6. Java编程思想之九 接口

    接口和内部为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类和抽象方法 创建一个抽象类是希望通过这个通用接口操纵一系列类. Java提供了一个叫做抽象方法的机制,这种方法是不完整的:仅声明而 ...

  7. 修改 ulimit 时 需要注意的问题

  8. TensorFlow2.0初体验

    TF2.0默认为动态图,即eager模式.意味着TF能像Pytorch一样不用在session中才能输出中间参数值了,那么动态图和静态图毕竟是有区别的,tf2.0也会有写法上的变化.不过值得吐槽的是, ...

  9. Mybatis报错:org.apache.ibatis.builder.IncompleteElementException

    org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer遇到这 ...

  10. mysql5.7的主从切换

    mysql5.7的主从切换 主库: master 10.11.0.211 从库: slave 10.11.0.210 目标:主从切换,将slave切换为master,master切换为slave 一. ...