1.实现评论功能的方式
1>第三方社会化评论插件——>友言、多说、畅言、Dispqu、网易云跟帖
2>Django评论库——>django-comment
3>自己写代码
评论库是个app,首先需要建好这个模型,根据这个模型进一步去拓展。
2.创建评论模型
评论对象(哪一篇文章,哪一篇公告之类的)
评论内容(写了什么东西)
评论时间
评论者
首先,创建app
python manage.py startapp comment
之后创建模型
3.评论需要登录用户
确保较低程度减少垃圾评论、也提高了评论门槛(第三方登录解决)、还可以通知用户。
在views博客详情页面中,接收的request有user这个属性,可以把这个传到前端页面。Django1.8前端可以直接获取,因为使用的是render。
在Django文档的User authentication in Django
web请求中的身份验证:在前端判断用户是否登录。
Django使用会话和中间件将身份验证系统连接到。request objects
它们request.user
在代表当前用户的每个请求上提供一个属性。如果当前用户尚未登录,则此属性将设置为的实例AnonymousUser
,否则将是的实例User
。
您可以使用来区分它们 is_authenticated
,如下所示:
{% if request.user.is_authenticated %}
已登录
{% else %}
未登录
<form action="{% url 'login' %}" method="POST">
{% csrf_token %}
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="登录">
</form>
{% endif %}
未登录的情况下让它可以提交一个登录的表单,并设置好表单提交的url,之后在views中认证用户和登录用户。authenticate
(request = None,**凭据)
使用authenticate()
验证的一组凭据。它需要的凭据作为关键字参数,username
并password
默认情况下,检查他们对每一个 认证后端,
并返回一个User
凭据是否有效的后端对象。如果凭证对于任何后端无效或如果后端引发PermissionDenied
,则返回None
。
from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not None:
# A backend authenticated the credentials
else:
# No backend authenticated the credentials
如果您具有经过身份验证的用户,则希望附加到当前会话-这是通过一个login()
函数完成的。login
(request,user,backend = None)
要从视图登录用户,请使用login()
。它需要一个HttpRequest
对象和一个User
对象。login()
使用Django的会话框架在会话中保存用户ID。
请注意,匿名会话期间的任何数据集在用户登录后都会保留在会话中。
本示例说明了如何同时使用authenticate()
和login()
:
def login(request):
username = request.POST.get('username','')
password = request.POST.get('password','')
user = auth.authenticate(request, username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('/')
else:
return render(request,'error.html',{'message':'用户名或密码不正确'})
先获取用户名和密码,之后通过authenticate()认证用户,如果认证通过则通过auth.login()登录用户,并跳转到指定页面,反之跳转到错误页面。