首页
学习
活动
专区
圈层
工具
发布

评论区功能的具体实现思路

其他字段,如 email、password_hash 等,根据需要添加。 评论表 (comments) comment_id:评论唯一标识符。 parent_id:父级评论的 ID。...对于一级评论,该字段可以为 NULL 或 0 表示没有父评论。 content:评论内容。 user_id:发表评论的用户 ID,外键关联到 users 表。...后端逻辑 接收和存储评论 当用户提交评论时,后端接收到评论内容、用户 ID、(如果有的话)父评论 ID 和帖子 ID。 根据这些信息,在 comments 表中创建一个新条目。...一种方法是,在检索帖子的评论时,首先获取所有一级评论(parent_id 为 NULL 或 0),然后对每个一级评论,检索其子评论。...,还是一级评论的回复的回复): 每个一级评论下之展示喜欢数最多的前两个回复,更多回复需要调获取子评论的接口(/child_comment): https://www.zhihu.com/api/v4/comment_v5

99610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 Flask 做一个评论系统

    另外会有一个parent_id指向评论回复的对象(也是一条评论),这里有一个指向自身的外键,使用Flask-SQLAlchemy写起来是这样的: Python class Comment(db.Model...直接评论的是第一层节点,然后回复这些评论的,和回复这些回复的,都展平成一层节点,算作这条评论的子节点。外层评论和子节点都按时间排序显示,但只有外层评论具有楼层属性。...且子节点应该展示回复的是哪位作者,这样就大大减小了上下文混淆的可能(虽然我觉得我这评论的量,全显示成一层也不会怎样)。...现在就到了激动人心的时刻了,把Disqus的评论数据迁移过来!我到Disqus页面上去看,发现Disqus支持导出评论数据为特定的结构,是一个xml,只要是结构化的数据,那就问题不大了。...只复制请求上下文,而会创建新的应用上下文,我写了两个函数,一个是添加应用和请求上下文到一个函数,另一个是将函数转换成后台任务: Python def with_app_context(f): ctx

    1.5K20

    django之评论系统及多级评论

    我们知道每一个 URL 对应着一个 Django 的视图函数,于是 Django 调用这个视图函数,我们在视图函数中写上处理用户通过表单提交上来的数据的代码,比如验证数据的合法性并且保存数据到数据库中,...Comment 模型类的实例,但还不保存评论数据到数据库。...中已有评论的nid是否相同, # 如果相同,表示就是回复的此信息 # 如果不同,则需要去 comment_dic 的所有子元素中寻找,一直找,如果一系列中未找,则继续向下找 for k..., v_dic in d_dic.items(): # 找回复的评论,将自己添加到其对应的字典中,例如: {评论一: {回复一:{},回复二:{}}} if k[0] == comment_obj...,添加到comment_dic[评论对象] = {} comment_dic[comment_obj] = collections.OrderedDict() else: # 如果是回复的评论

    7.8K61

    AI编程小试牛刀-强大的Cursor+Claude3.7-实现一个项目跟踪小系统

    我希望参与售前项目的每个人都能够将项目相关信息反馈到项目下面,而且反馈的信息可以类似传统论坛一样进行回复和评论,以记录售前项目跟踪完整的时间线索。...点击某个项目进入到更多项目详情界面的时候,能够显示所有历史评论和回复信息。 注意,这里有个关键,我继续反问Cursor需求是否有描述不清楚或存在歧义的地方。...(需要) 关于评论交互: 是否需要添加评论的实时更新功能(如新评论自动显示)?(不需要) 评论框是否需要支持 @ 用户功能?(不需要) 是否需要添加评论的排序功能(如按时间、点赞数等)?...(不需要) 关于权限控制: 是否需要限制评论的权限(如登录用户才能评论)?(不需要限制) 是否需要添加评论的审核机制?(不需要) 是否需要限制评论的频率(防刷)?...(不需要) 评论的懒加载是否应该: 初始只加载第一级评论(加载1到3级评论) 点击"展开回复"时才加载子评论,还是初始就加载所有评论,但子评论默认折叠?

    32300

    【愚公系列】2021年12月 Python教学课程 14-递归函数

    文章目录 一、递归函数 一、递归函数 我们在前面的章节中,很多次的看到了在函数中调用别的函数的情况。如果一个函数在内部调用了自身,这个函数就被称为递归函数。 What?函数可以自己调用自己?...的回复 1.1.3--对评论 1.1 的回复 1.2 --对评论 1 的回复 1.2.1--对评论 1.2 的回复 1.3 --对评论 1 的回复 2--直接对文章的评论 2.1 --对评论...2 的回复 2.1.1--对评论 2.1 的回复 2.2 --对评论 2 的回复 3--直接对文章的评论 4--直接对文章的评论 请一定要注意,其中的 1.1.1 这种是方便大家理解评论层次,并不是真正的评论内容...child_comment: for child_child_child_comment in child_child_comment: # ....子评论的子评论的子评论的...(all_top_comments) 使用递归函数需要注意防止递归深度溢出,在 Python 中,通常情况下,这个深度是1000 层,超过将抛出异常。

    36430

    关于使用现代CSS新特性布局嵌套评论组件的尝试,希望对你有所启发

    这是两条评论的列表的HTML,没有任何回复。 如果对其中一条评论进行回复,那么将会添加一个新的 。 到这样做不行。因为我无法准确知道连接线的高度。这是因为在CSS中无法直接根据内容动态调整高度。问题出在这里:我需要确保连接线的底部与第一个回复的头像对齐。...我们可以将连接线添加到主评论上,而弯曲的元素则用于表示回复。 接下来,如果我们有另一个回复针对第一个回复呢?...处理添加到主评论的连接线 这是我们要解决的第一个挑战。如果主评论有回复,我们需要为其添加连接线。...评论组件的这部分将需要处理以下内容: 最小宽度 长内容 多语言内容(左到右 vs 右到左) 上下文菜单 评论交互 编辑状态 错误状态 我在这篇文章中无法详细展示上述所有内容,因为可能需要写一本书来完整讲述

    1.4K30

    【设计模式 14】组合模式

    ,如所有的菜单抽象出的 InterMenu 实现了Component的叶子节点Leaf,如第一个二级菜单和下面的三级菜单,这些对象不再由其他同类对象组合而成。...组合模式有两种不同的具体实现,分别为 透明模式:如果将操作子节点的相关方法也放在接口 Component中,因此不管是叶子节点还是枝干节点都yo能够了完全一致的行为接口,客户端可以无差别的使用这两种对象...安全模式:Component中只定义单个菜单的行为,操作子节点的相关方法放在Composite中声明,这样Leaf就可以不用实现多余的方法,但Leaf和Composite就有了不同的接口,客户端需要在使用时加以判断才行...应用场景 需要实现树状结构时,如多级菜单,部门结构,复杂UI等 希望客户端以相同的方式处理简单和复杂的元素时 例 一个评论系统,某条评论可以设置允许回复和不允许回复,不允许回复的评论对象可以看作...interface InterComment { /** * 展示评论 */ void showComment(); /** * 回复评论

    34720

    vue + element-ui + scss 仿简书评论模块

    回复包括回复人及被回复人的昵称,回复内容,时间,以及回复按钮 评论输入框。输入框最开始是隐藏的,点击回复按钮或添加新评论时才会显示,点取消隐藏。...回复功能可以回复当前评论本身,也可以回复其他用户对这条评论的评论,我们称之为子评论。所有子评论都挂载最初的父评论下。...当点击子评论的回复按钮时,输入框弹出的同时会自动填上 @ + 被回复者的昵称,使逻辑更加合理。...点击添加新评论是添加对本条评论的子评论,不是对文章的新评论,所以文章末尾处应该还有一个输入框,用来发表新评论。 三、数据结构设计 参照的效果图有了,接下来就是设计数据了。...content: '非常靠谱的程序员', //评论内容 reply: [ //回复,或子评论 { id: '34523244545',

    1.7K30

    Vue组件案例-评论列表

    编写这个案例步骤大致如下: 编写一个基本的样式页面,页面内容有两部分:提交评论信息表单、展示评论信息的列表 那么提交评论信息表单可以写为一个子组件,而评论信息列表为父组件 给提交评论信息表单将子组件的评论内容传递到父组件评论信息列表...上面抽取添加评论内容为一个组件之后,下面来在父组件中使用子组件,如下: ? 浏览器显示如下: ? 那么组件显示成功之后,下面就应该实现一下添加评论内容的功能。...3.实现添加评论内容的思路 本次添加评论内容首先需要考虑一个数据的存储,之前的一个示例是直接加入到父组件Vue实例的data中,这个比较简单。...6.将获取的user和comment存储到localStorage中 ? 打开浏览器,查看存储的数据,如下: ? 7.存储评论内容数据完毕后,清空输入框 ? 好了,这时候已经设置添加好评论内容的数据。...下面来看看如何在列表中刷新数据。 8.在父组件编写刷新列表的方法reload_list(),提供子组件进行调用 ? ?

    2.5K30

    Vue组件案例-评论列表

    将子组件的评论内容传递到父组件「评论信息列表」 同时,需要写一个存储以及刷新评论信息列表的方法,在子组件提交评论信息之后,子组件还要调用父组件的这个刷新方法。...2.抽取评论内容作为子组件 上面抽取添加评论内容为一个组件之后,下面来在父组件中使用子组件,如下: 浏览器显示如下: 那么组件显示成功之后,下面就应该实现一下添加评论内容的功能。...3.实现添加评论内容的思路 本次添加评论内容首先需要考虑一个数据的存储,之前的一个示例是直接加入到父组件Vue实例的data中,这个比较简单。...6.将获取的user和comment存储到localStorage中 打开浏览器,查看存储的数据,如下: 7.存储评论内容数据完毕后,清空输入框 好了,这时候已经设置添加好评论内容的数据。...下面来看看如何在列表中刷新数据。

    2.2K10

    关于无限极(类似楼盖楼)评论回复系统的想法与构思

    评论系统 缘起 最近正在准备设计自己的社区网站,到设计评论这里的时候,引出了很多疑惑,于是记录一下,希望大佬们可以多多提出自己的想法,集思广益。...首先声明一下,我自己的项目不会这么做的,大家应该都没有类似的场景出现,我自己准备做一级评论对应多个回复的模式,不会有递归的方式。 ok,开始正文。...接下来,我们不能直接把这样的list给前端,因为要考虑到分页的情况,而我们根本不知道每一条主体评论的层级深度。 于是现在出现了两种做法:1.先筛选出几条主体评论,然后依次用ajax取出下面的回复。...通过递归直接把主体评论与下面对应的回复返回给前端,数据结构如下: 这样前端在展示的时候也可以使用递归(我不会),或者另一种基础的方式,比如我新增一个字段给出每条主体评论的回复层级深度,这样前端使用 foreach...但是节点的添加、删除及修改代价较大,将会涉及到表中多方面数据的改动。有兴趣的朋友可以研究一下。

    53230

    微博级评论系统设计:扛住百万级评论与嵌套回复的全方案

    (2)优势单表数据量可控:1 亿条评论分散到 512 张表,单表仅 200 万行,查询性能稳定(MySQL 单表最佳数据量 100-500 万行);热点隔离:热门微博(如百万评论)的评论集中在少数表,可单独给这些表所在的库...(2)缓存更新策略写透更新:新增评论 / 回复时,先写数据库,再更新 Redis(ZSet 添加 comment_id,Hash 添加详情),确保缓存与数据库一致;失效删除:删除评论时,先更新数据库(status...用户优化:回复中 @用户时,存储at_user_ids字段(如 “123,456”),并同步发送消息到 “@用户的通知队列”;前端显示时,直接解析at_user_ids关联用户昵称,避免在评论内容中解析...+ 回复数 ×0.3 - 时间衰减(如发布超过 24 小时,热门度 ×0.5);计算方式:每 10 分钟异步计算一次热门列表(用定时任务或 Flink 流处理),存储到 Redis ZSet(Key:...“违规评论表”,后续人工复核,避免流入数据库;大内容拆分:若评论含长文本(>500 字)或图片 / 视频,将内容存储到对象存储(如 OSS),评论表只存 “内容 ID” 和缩略信息(如 “[图片]”“[

    41410

    评论功能的简单实现

    从图可以简单看出,这种类型的评论是比较简单的,设计一个评论表,其内部添加一个挂载的博客id字段即可 数据库设计 CREATE TABLE `comment` ( `comment_id` int(11...小一评论博客,小二紧接着回复小一的评论,小三又回复小二的评论,小一又回了小三的评论,像俄罗斯套娃层层套 数据库设计 这里笔者用单表来实现,笔者称评论与回复这二者为父子关系,评论为父级,回复为子级,这种关系在数据里增多一个...private String nickname; private String content; private List children; // 存放子级的回复...1楼和2楼同级,属于父级评论,直接挂载的博客下 A属于1楼评论的子级 B属于A的子级 C属于B的子级 二层的示意图: ?...,即回复内有回复 findChildren(comment, fatherChildren); // 将递归处理后的集合放回父级的孩子中

    1.7K11

    评论系统的几种展示结构和存储设计

    线性结构的主要特点是:结构简单,易于浏览;不支持深度对话,因为回复无法直接关联到特定的评论;适合对话较少或者对话不重要的场景。2....他们可能会浏览一下最新的评论,但不太可能深入到评论的对话中。另一个例子是电商网站的商品评价,用户通常会浏览最新的评价或者最有帮助的评价,而不会关注评价之间的对话。...: 在这种模型中,每个评论都有一个路径字段,记录了从顶级评论到当前评论的路径。...例如,如果评论B是评论A的子评论,评论C是评论B的子评论,那么评论A的路径可能是"A",评论B的路径可能是"A/B",评论C的路径可能是"A/B/C"。...这种结构的主要优点是它可以方便地跟踪和组织讨论的线索,使得用户可以更容易地理解和参与到讨论中。同时限制评论层级,又不至于让用户过度沉浸在评论的交互中,回归主题。2.

    2.1K21

    Typecho主题模板制作快速入门简易教程

    面包屑通常用来展示页面在站点中的位置,使访客不会迷失方向,如:Home » Journal » Hello World 在Blog中,我们看看会有哪些路径出现: 首页 » 最新文章 首页 » 分类名称...' comment-child' : ' comment-parent'; //评论层数大于0为子级,否则是父级 ?...> 三、用系统的评论变量替换HTML中相关属性 把 HTML 里相关的属性,替换成 typecho 系统中的评论变量,变量的列表可以参考下面。下面的例子,是替换评论的 id: "> 其中,替换ID这里,还需要判断判断当前评论是父级评论还是子级评论,且判断评论 ID 的奇偶数等。...四、添加嵌套评论(子评论) 替换前: 评论相关 --> 替换后后如下: <?

    6.6K20

    微博评论在线分析可视化上线

    目前公众号平台改变了推送机制,点“赞”、点“在看”、添加过“星标”的同学,都会优先接收到我的文章推送,所以大家读完文章后,记得点一下“在看”和“赞”。...有没有这么一种可能,在微博抓取网站抓取数据比如微博评论后,立刻在线可视分析? 有的,现在它来了。 界面介绍 还是同一个站点,子页面名为 weibo-comment-visual。...评论文件只能选择服务器上存在的,如果目的文件不存在,可以前往 weibo-comment-spider 或者 weibo-comment-with-reply-spider 子页面进行抓取。...趋势分析 Tab 这个 tab 是分析一些随时间变化的指标,如发布的评论数,评论的点赞数和回复数。时间纬度可以按分钟、按小时、按天、按月。 同时,可以勾选平滑趋势使得这些折线图更为光滑一些。...词云生成 tab 将微博的所有评论文本计算词频生成的词云图。 可以添加停用词,比如我不想看到这个 doge。

    1.1K20

    2021 微博爬虫更新及使用指南

    这是 月小水长 的第 78 篇原创干货 目前公众号平台改变了推送机制,点“赞”、点“在看”、添加过“星标”的同学,都会优先接收到我的文章推送,所以大家读完文章后,记得点一下“在看”和“赞”。...bug 反馈;bug 已经修复,使用统一在此文回复。...为什么必须是 3.6.6 x64 位呢,这是因为分发的 pyd 文件在我的电脑上是由 Python 3.6.6 生成的,如果是直接分发 py 文件,则没有这个限制,我也是后来不断有读者反馈才了解到这个...q=%E8%B0%A2%E5%A8%9C%E4%BE%84%E5%AD%90%E8%80%83%E4%B8%8A%E6%B8%85%E5%8D%8E&Refer=top 评论爬虫 同时 2021 新版微博评论及其子评论爬虫发布...同时,本次更新优化了逻辑,单条微博的评论上限达到了几千到一万之多,获取方式依然在 2021 新版微博评论及其子评论爬虫发布。

    1.6K20
    领券