极墨笔记

 找回密码
 立即注册
搜索
热搜: UG 建模 discuz
查看: 700|回复: 0

[分享] 评论提交功能实现

[复制链接]

565

主题

731

帖子

7473

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7473

活跃会员推广达人突出贡献优秀版主荣誉管理论坛元老

发表于 2018-11-28 22:28:31 | 显示全部楼层 |阅读模式
评论的提交只有在注册之后才能进行评论,首先调取forms.py中的各个评论表单用于前端页面的填写。
1.在views.py的view函数中添加下面这段代码
  1. comment_form = CommentForm({'article': id})
复制代码
他创建了一个表单对象comment_form,然后初始化了文章id。
2.在views.py中创建一个提交表单的方法,代码如下:
  1. def comment_post(request):
  2.     comment_form = CommentForm(request.POST)
  3.     if comment_form.is_valid():
  4.         #获取表单信息
  5.         comment = Comment.objects.create(content=comment_form.cleaned_data["comment"],
  6.         article_id=comment_form.cleaned_data["article"],
  7.         user=request.user)
  8.         comment.save()
  9.     else:
  10.         pass
  11.     return redirect(request.META['HTTP_REFERER'])
复制代码
这里提交的包括上面初始化之后的文章的id、填写进去的评论内容、发表评论的作者。
3.在urls.py中加入提交评论的路由:
  1. path('comment_post/', views.comment_post, name='comment_post'),
复制代码
4.前端页面中需要区分登入和未登入状态下的评论区显示状态,格式如下:
  1. {% if not request.user.is_authenticated %}
  2. <p>还没有登陆?可以登录后再评论哦。<b><a href="{% url 'login' %}">»去登录</a> <a href="{% url 'register' %}">»去注册</a></b></p>
  3. {% else %}
  4. <p><b>{{ request.user.username }}</b>,快来写点评论吧! <a href="{% url 'logout' %}">注销</a></p>
  5. <form action="{% url 'comment_post' %}" method="post">
  6. {% csrf_token %}
  7. <p>{{ comment_form.comment }}</p>
  8. <p>
  9. {{ comment_form.article }}
  10. <input type="submit" value="评论">
  11. </p>
  12. {% endif %}
  13. </form>
复制代码
然后修改css美化一下即可。
5.把forms.py的CommentForm函数中的author和email改成非必须,加入required=False。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|论坛版权|极墨笔记 ( 浙ICP备17036881号-1 )

GMT+8, 2019-12-8 20:35 , Processed in 0.048805 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表