預計實現**使用者註冊、登入的功能
一、model 使用者模型urlpatterns = [
url(r'^login/$', views.login, name='login'),
url(r'^register/$', views.register, name='register'),
url(r'^logout/$', views.logout, name='logout')
]
二、表單class
user
(models.model):
user_name=models.charfield
(max_length=50)
user_email=models.charfield
(max_length=100)
user_pass_hash=models.charfield
(max_length=100)
在form類中的clean_filename方法可以進行資料的驗證,例如下面的
def clean_user_eamil():
排除兩次密碼不一致
也可以提前檢查登入使用者的資訊是否存在
三、檢視class
loginform
(forms.form):
user_email = forms.charfield(label="郵箱",max_length=100)
user_password = forms.charfield(label="密碼",widget=forms.passwordinput())
class
registerform
(forms.form):
user_name=forms.charfield(label="使用者名稱", max_length=50)
user_email = forms.emailfield(label="郵箱", max_length=100,error_messages=)
user_password = forms.charfield(label="密碼", widget=forms.passwordinput())
user_password2 = forms.charfield(label="重複密碼", widget=forms.passwordinput())
defclean_user_password2
(self):
cleaned_data = super(registerform, self).clean()
user_password=cleaned_data['user_password']
user_password2= cleaned_data['user_password2']
if user_password2 != user_password:
raise forms.validationerror('兩次密碼不一致')
1. 獲取表單post的值包含註冊的email、username、password
2. 在資料庫建立相應使用者user.object.create()
3. 密碼要避免明文儲存
下面是自己實現的cookie2user,和setcookie方法1.獲取表單post的值包含註冊的email、password
2.與資料庫的資訊比較,驗證password
3.建立cookie,使用django的set_cookie
4.其他頁面可以通過瀏覽器請求的cookie,驗證cookie,解析使用者,判斷登入狀態
def
setcookie
(response, user_id, user_email, user_pass_hash, secret_key):
s = '%s-%s-%s' % (user_email, user_pass_hash, secret_key)
s = hashlib.sha1(s.encode()).hexdigest()
l = ['uid:' + str(user_id), s]
cookie = '-'.join(l)
response.set_cookie('cookie_name', cookie, 60)
return response
刪除cookiedef
cookie2user
(cookie):
try:
uid = cookie.split('-')[0].split(':')[1]
u = user.objects.filter(id=int(uid))[0]
s = '%s-%s-%s' % (u.user_email, u.user_pass_hash, secret_key)
s = hashlib.sha1(s.encode()).hexdigest()
if cookie.split('-')[1] == s:
user = u
else:
user = none
except exception:
user = none
return user
response.delete_cookie('cookiename')
即可
使用了這個裝飾器的view函式,如果處於登入狀態,可以從kw[『user』]獲取到user
基於django的登入註冊系統
2.功能實現 3.小結 請檢查填寫的內容 if login form.is valid username login form.cleaned data.get username password login form.cleaned data.get password try user model...
Django使用者登入與註冊系統
乙個很有趣的個人部落格,不信你來撩 fangzengye.com collapse n bar collapse id my n n n bar n active index 主頁 a li ul n n bar n n bar right a li logout 登出 a li login 登入 ...
Django設計登入
一 流程圖 二 編輯mysite account views.py django預設的使用者認證和管理中的兩個方法 from django.contrib.auth import authenticate,login from forms import loginform 使用者登入檢視函式 def...