潭州课堂25班:Ph201805201 django 项目 第二十四课 文章主页 多级评论数据库设计 ,后台代码完成 (课堂笔记)
加载新闻评论功能
1.分析
业务处理流程:
-
判断前端传的新闻id是否为空,是否为整数、是否不存在
请求方法:GET
url定义:'/news/<int:news_id>'
请求参数:url路径参数
参数 | 类型 | 前端是否必须传 | 描述 |
---|---|---|---|
news_id | 整数 | 是 | 新闻id |
新闻详情页直接通过模版渲染的方式来实现,在新闻详情页直接渲染此新闻的评论信息。
后台代码:从数据库中取出评论,跟在新闻详情页后直接渲染,
所需要的字段:评论 id, 评论内容,评论者,评论时间 ,
父级评论:同上字段
给数据库添加自关联
# 多表关联, 作者, 自关联(父评论)
# 只查字段:评论内容,作者名, 创建时间,
# 父评论的作者, 父评论内容, 父评论创建时间
# 查询条件: 没有被逻辑删除,指定新闻,
# 导入测试数据tb_comments_20181222.sql
# 将百度云盘2018年12月22日 解答课\datas中的tb_comments_20181222.sql文件先导入到虚拟机中
# 一定要保证tb_users中有id为1,2,3的三个用户,不然导入测试数据会报错
mysql -u用户名 -p -D 数据库名< tb_comments_20181222.sql
在news/models.p文件的Comments模型中定义如下实例方法,用于序列化:
def to_dict_data(self):
comment_dict = {
'news_id': self.news.id,
'content_id': self.id,
'content': self.content,
'author': self.author.username,
'update_time': self.update_time.strftime('%Y年%m月%d日 %H:%M'),
'parent': self.parent.to_dict_data() if self.parent else None,
}
return comment_dict
在 news-data.html 文件中