一,业务流程分析
1,功能
1,新闻详情
2,加载评论功能
3,添加评论功能
二、新闻详情页
1,业务流程分析
业务流程:
1,判断前端传递新闻ID是否为空,是否为整数,是否存在
二,接口设计
1、接口说明:
类目 说明
请求方式 GET
路径 /news/
参数格式 url路径参数
2、参数说明
参数名 类型 是否必须 描述
news_id 整数 是 新闻ID
3、返回结果:
html页面,直接通过模版渲染的方式实现
三、加载新闻评论
1.接口设计
新闻详情页,直接通过渲染获得
2.接口说明
类目 说明
请求方式 GET
路径 /news/
参数格式 url路径参数
3、参数说明
参数名 类型 是否必须 描述
news_id get 是
4、返回结果:
html页面,直接通过模版渲染的方式实现
news/view.py 文件
class NewsDetailView(View):
"""
新闻详情视图
url: '/news//'
"""
def get(self, request, news_id):
#1,校验是否存在
# 2,获取数据
news = News.objects.select_related('tag', 'author').only('title','content','update_time','tag__name','author__username').filter(is_delete=False, id=news_id).first()
news = News.objects.get(pk=news_id)
if news:
# 3,展示
return render(request,'news/news_detail.html',context={'news': news})
else:
return HttpResponseNotFound('
Page not found
')三、加载新闻评论
1,接口设计
新闻详情页,直接渲染新闻评论
2,后端代码
模型代码
#本项目设计二级评论
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True)
模型修改一定要数据库迁移
python manage.py makemigrations
python manage.py migrate
四、添加新闻评论功能
1.业务流程分析
业务处理流程
1.判断用户是否登录
2.判断前端传的新闻ID是否为空,是否为整数,是否存在
3.判断评论内容是否为空
4.判断是否有父评论,父评论id是否与新闻id匹配
5.保持新闻评论
2.接口说明
类目 说明
请求方式 POST
路径 /news//comment/
参数格式 url路径参数,表单参数
3、参数说明
参数名 类型 是否必须 描述
news_id 整数 是 新闻ID
content 字符串 是 新闻评论内容
parent_id 整数 是 父评论id
注意:post请求需要携带csrftonke
4、返回结果:
json
{
"errno": "0",
"errmsg":""
"data": {
"news_id": 1170,
"content_id": 3569,
"content": "评论比较中肯。",
"author": "admin",
"update_time": "2019年08月19日 16:00",
"parent": {
"news_id": 1170,
"content_id": 893,
"content": "行文思路简单肤浅,文章结构平面呆板。",
"author": "xinlan",
"update_time": "2018年12月21日 11:17",
"parent": null
}
}
}