django專案基於鉤子驗證的註冊功能

2021-10-02 23:24:53 字數 4584 閱讀 2470

前端html

class="

agile-row

">

class="

login-agileits-top

">

class=row>

前端jquery

$(document).ready(function () ;

$.each(data[

'info

'], function (key, value) );

} else

if (data.status == 1) ";

});}

else

}, 'json');

});});

後台路由

#

註冊path('

regist/

', login.regist,name='

regist

'),

寫鉤子驗證:專案目錄下建立my_forms.py檔案

from django import forms  #

自動驗證 # forms元件

from django.forms import

widgets

from django.core.exceptions import

validationerror

from django.core.validators import

regexvalidator

from blog.models import

member

class

userform(forms.form):

wid_01 = widgets.textinput(attrs=)#

wid_02 = widgets.passwordinput(attrs=)#

member_name=forms.charfield(max_length=60,min_length=4,label="

使用者名稱",widget=wid_01,error_messages=)

member_nickname = forms.charfield(max_length=60, min_length=2, label="

顯示名稱

", widget=wid_01,

error_messages=)

member_pwd=forms.charfield(max_length=30,min_length=8,label="

密碼",widget=wid_02,validators=[regexvalidator('

\d+','

只能是數字

') ],error_messages=)

r_pwd=forms.charfield(max_length=30,min_length=8,label="

確認密碼

",widget=wid_02,validators=[regexvalidator('

\d+','

只能是數字

') ],error_messages=) #

/(?=.*[a-z])(?=.*\d)(?=.*[#@!~%^&*])[a-z\d#@!~%^&*]/i

member_email = forms.emailfield(label="

郵箱",widget=wid_01,error_messages=)

member_tel = forms.charfield(max_length=11, widget=wid_01,label="

**號碼",)

#區域性鉤子

defclean_member_name(self):

val = self.cleaned_data.get("

member_name")

res = member.objects.filter(member_name=val)

ifnot

res:

return

val

else

:

raise validationerror("

使用者名稱已存在!")

#全域性鉤子

defclean(self):

member_pwd=self.cleaned_data.get("

member_pwd")

r_pwd=self.cleaned_data.get("

r_pwd")

if member_pwd and

r_pwd:

if member_pwd==r_pwd:

#print(self.cleaned_data)

return

self.cleaned_data

else

:

raise validationerror('

兩次密碼不一致!')

else

:

return self.cleaned_data

後台方法

from blog.my_forms import *

#註冊頁

把這個結果告訴給前台,ajax

member_name = request.post.get("

member_name")

member_nickname = request.post.get("

member_nickname")

member_pwd = make_password(request.post.get("

member_pwd"))

member_email = request.post.get("

member_email")

member_tel = request.post.get("

member_tel")

old_member_obj = member.objects.filter(member_tel=member_tel)

ifold_member_obj:

res[

'status

'] = 3res[

'info

'] = '

手機號已註冊

註冊成功,即將跳轉至首頁

'else

: res[

'status

'] = 2res[

'info

'] = '

發生了乙個意料之外的錯誤,註冊失敗

把這個結果告訴給前台,ajax

#response_new.set_cookie("member_id",member_obj.member_id)#設定cookie

#response_new.set_cookie("member_name", member_obj.member_name)

#session

request.session['

member_id

'] =member_obj.member_id

request.session[

'member_name

'] =member_obj.member_name

#response_new.set_cookie("member_id", member_obj.member_id, expires = 60 * 60 * 24 * 7)

return

response_new

return render(request, '

blog/regist.html

')

頁面效果

基於Django框架的python web

django是乙個開放源 的web應用框架,由python寫成。採用了mtv的框架模式,即模型m,檢視v和模版t。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的 的,即是cms 內容管理系統 軟體。並於2005年7月在bsd許可證下發布。這套框架是以比利時的吉普賽爵士吉他手djan...

django中csrf token的驗證原理

1.django是怎麼驗證csrfmiddlewaretoken合法性的?2.每次重新整理頁面的時候中的csrf的value都會更新,每次重複登入的時候cookie的csrf令牌都會重新整理,那麼這兩個csrf token有什麼區別 csrf簡稱跨站請求偽造 django第一次響應來自某個客戶端的請...

Django自帶的使用者驗證系統

第一步 系統配置使用者表 第二步 使用者註冊和登陸驗證功能 首先,在models中建立使用者表,導包 from django.contrib.auth.models import abstractuser 建立使用者表 class user abstractuser username models....