1. 程式人生 > 實用技巧 >評論功能設計和使用者登入

評論功能設計和使用者登入

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()驗證的一組憑據。它需要的憑據作為關鍵字引數,usernamepassword預設情況下,檢查他們對每一個認證後端
並返回一個
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()登入使用者,並跳轉到指定頁面,反之跳轉到錯誤頁面。