1. 发表评论接口设计
1.请求方式
选项 | 方案 |
---|---|
请求方法 | POST |
请求地址 | /detail/ |
2.请求参数:表单
参数名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
user_id | string | 是 | 发表评论的用户id |
article_id | string | 是 | 评论的文字id |
content | string | 是 | 评论内容 |
3.响应结果:HTML
字段 | 说明 |
---|---|
提交失败 | 响应错误提示 |
提交成功 | 刷新页面展示 |
2. 发表评论接口实现
1.发表评论实现
from home.models import Comment,Article
class DetailView(View):
def post(self,request):
#获取用户信息
user=request.user
#判断用户是否登录
if user and user.is_authenticated:
#接收数据
id=request.GET.get('id')
content=request.POST.get('content')
#判断文章是否存在
try:
article = Article.objects.get(id=id)
except Article.DoesNotExist:
return HttpResponseNotFound('没有此文章')
#保存到数据
Comment.objects.create(
content=content,
article=article,
user=user
)
#修改文章评论数量
article.comments_count+=1
article.save()
#拼接跳转路由
path=reverse('home:detail')+'?id={}'.format(article.id)
return redirect(path)
else:
#没有登录则跳转到登录页面
return redirect(reverse('users:login'))
2.detail.html修改
<form method="POST">
{% csrf_token %}
<input type="hidden" name="id" value="{{ article.id }}">
<div class="form-group"><label for="body"><strong>我也要发言:</strong></label>
<div>
<div class="django-ckeditor-widget" data-field-id="id_body" style="display: inline-block;">
<textarea cols="40" id="id_body" name="content" rows="10" required data-processed="0" :data-config="data_config" data-external-plugin-resources="[]" data-id="id_body" data-type="ckeditortype">
</textarea>
</div>
</div>
</div>
<!-- 提交按钮 -->
<button type="submit" class="btn btn-primary ">发送</button>
</form>