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