評論功能設計和使用者登入
阿新 • • 發佈:2020-10-23
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使用會話和中介軟體將身份驗證系統連線到。requestobjects
它們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()登入使用者,並跳轉到指定頁面,反之跳轉到錯誤頁面。