1#!/usr/bin/env python2#
-*- coding: utf8 -*-3#
__author: "skiler hao"4#
date: 2017/3/30 15:40
5from django.core.exceptions import
validationerror #丟擲異常
6from django import
forms
7from django.forms import
fields
8from django.forms import
widgets #內部有外掛程式 用於密碼什麼二次驗證
9from django.core.validators import
regexvalidator #定義正規表示式
10from respository import
models
1112
13class
registerform(forms.form):
14 username =fields.charfield(
#limit_cjoices_to= 補充##針對select的所有queryset做篩選,用於foreignkey,manaytomany欄位
15 required=true,
16 widget=widgets.textinput(attrs=),
17 min_length=6,
18 max_length=12,
19 strip=true,
20 error_messages=,23)
24 email =fields.emailfield(
25 required=true,
26 widget=widgets.textinput(attrs=),
27 strip=true,
28 error_messages=,30)
31 pwd =fields.charfield(
32 widget=widgets.passwordinput(attrs=,render_value=true),
33 required=true,
34 min_length=6,
35 max_length=12,
36 strip=true,
37 validators=[38#
下面的正則內容一目了然,我就不注釋了
39 regexvalidator(r'
((?=.*\d))^.$
', '
必須包含數字'),
40 regexvalidator(r'
((?=.*[a-za-z]))^.$
', '
必須包含字母'),
41 regexvalidator(r'
((?=.*[^a-za-z0-9]))^.$
', '
必須包含特殊字元'),
42 regexvalidator(r'
^.(\s)$
', '
密碼不能包含空白字元'),
43 ], #
用於對密碼的正則驗證
44 error_messages=,47)
48 pwd_again =fields.charfield(49#
render_value會對於passwordinput,錯誤是否清空密碼輸入框內容,預設為清除,我改為不清楚
50 widget=widgets.passwordinput(attrs=,render_value=true),
51 required=true,
52 strip=true,
53 error_messages=
5455)56
57def
clean_username(self):58#
對username的擴充套件驗證,查詢使用者是否已經存在
59 username = self.cleaned_data.get('
username')
60 users = models.user.objects.filter(username=username).count()
61if
users:
62raise validationerror('
使用者已經存在!')
63return
username
6465
defclean_email(self):66#
對email的擴充套件驗證,查詢使用者是否已經存在
67 email = self.cleaned_data.get('
email')
68 email_count = models.user.objects.filter(email=email).count() #
從資料庫中查詢是否使用者已經存在
69if
email_count:
70raise validationerror('
該郵箱已經註冊!')
71return
7273
def _clean_new_password2(self): #
檢視兩次密碼是否一致
74 password1 = self.cleaned_data.get('
pwd'
)75 password2 = self.cleaned_data.get('
pwd_again')
76if password1 and
password2:
77if password1 !=password2:78#
self.error_dict['pwd_again'] = '兩次密碼不匹配'
79raise validationerror('
兩次密碼不匹配!')
8081
defclean(self):82#
是基於form物件的驗證,字段全部驗證通過會呼叫clean函式進行驗證
83 self._clean_new_password2() #
簡單的呼叫而已
8485
86class
loginform(forms.form):
87 username =fields.charfield(
88 required=true,
89 widget=widgets.textinput(attrs=),
90 min_length=6,
91 max_length=12,
92 strip=true,
93 error_messages=94)
9596 pwd =fields.charfield(
97 widget=widgets.passwordinput(attrs=),
98 required=true,
99 min_length=6,
100 max_length=12,
101 strip=true,
102 error_messages=
103)
104105
defclean(self):
106 username = self.cleaned_data.get('
username')
107 pwd = self.cleaned_data.get('
pwd'
)108 user = models.user.objects.filter(username=username).first()
109if username and
pwd:
110if
notuser :
111112
#self.error_dict['pwd_again'] = '兩次密碼不匹配'
113raise validationerror('
使用者名稱不存在!')
114elif pwd !=user.password:
115raise validationerror('
密碼不正確!')
116117 forms.py
django 登入 註冊
一 登入 目錄結構如下 2 在主專案urls.py中新建users的include url 4 登入利用django渲染好的模板,url定義如下 login.html檔案如下 二 退出 1 退出用django的logout模組,同樣,先定義url 2 定義好之後,這裡需要在views.py裡面新建l...
基於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 登入 ...