一,業務流程分析
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
}
}
}