评论功能设计和用户登录

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中认证用户和登录用户。
authenticaterequest = 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()函数完成的
loginrequestuserbackend = 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()登录用户,并跳转到指定页面,反之跳转到错误页面。
posted @ 2020-10-23 12:03  十方劫  阅读(150)  评论(0编辑  收藏  举报