django 的form登入 註冊

2022-08-10 06:24:10 字數 4495 閱讀 9235

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

email

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 登入 ...