Django forms效驗元件

2022-09-04 10:21:07 字數 3132 閱讀 3040

可以幫我們快速的進行欄位的判斷

from django import forms 匯入模組

class userform(forms.form): 建立類

name=forms.charfield(min_length=4,lable='姓名')

form = userform(request.post) 例項化可以傳遞引數也可以不用傳遞引數

form.is_valid() 校驗字段

form.cleaned_data 校驗成功的字段

form.errors 校驗失敗的字段

form.name 模板中渲染input

form.name.errors 模板中渲染當前欄位的錯誤資訊

from django.forms import widgets 匯入設定字段屬性的模組

欄位的屬性設定

lable='姓名' 設定字段中文名

widgets = passwordinput() 設定字段渲染type屬性為password

widgets = textinput() 設定字段渲染type屬性為text

widgets = textinput(attrs=) 設定inpu標籤的屬性

error_messages = 配置顯示的錯誤資訊,key不能修改

error_messages = 格式錯誤

class userform(forms.form):

name=forms.charfield(min_length=4,lable='姓名')

email = forms.emailfield(lable='郵箱')

from django.forms import widgets 首先 匯入模組

name=forms.charfield(min_length=4,lable='姓名',widgets = passwordinput)

字段屬性的設定

widgets = passwordinput() 設定字段渲染type屬性為password

widgets = textinput() 設定字段渲染type屬性為text

widgets = textinput(attrs=) 設定inpu標籤的屬性

error_messages = 配置顯示的錯誤資訊,key不能修改

error_messages = 格式錯誤

form = userform(request.post) 例項化form物件

form.is_valid() #校驗提交的字段是否符合資訊,返回布林值

如果 form.is_valid() 為true form.cleaned_data 返回值是字典,所有的效驗成功的字段,和字段值,

如果form.is_valid() 為false form.errors 返回的是字典,所有校驗失敗的字段,和字段值,form.cleaned_data 返回值是字典,所有的效驗成功的字段,和字段值,

form.cleaned_data 所有的效驗成功的字段,和字段值

form.errors 返回的是字典,所有校驗失敗的字段,和字段值,form.cleaned_data 返回值是字典,所有的效驗成功的字段,和字段值,

form = userform() 首先例項化form物件,不傳遞引數

把變數出入模板中

可以form.name進行input的標籤渲染,或者進行for迴圈渲染,在或者} } 把所有字段渲染出來 _p ,_ul 這個代表渲染出來的標籤

進行渲染時可以取出lable屬性 如 form.name.lable

form = userform(request.post)當有引數例項化時 在模板中渲染會把你傳進來的值,渲染進去

form.name.errors 存放的是當前字段錯誤資訊的列表,這裡是name欄位資訊的錯誤列表

form.name.errors.0 取出錯誤資訊

from django.core.exceptions import validationerror

class userform(forms.form):

name=forms.charfield(min_length=4,lable='姓名')

email = forms.emailfield(lable='郵箱')

# 區域性鉤子

def clean_name(self):

val=self.cleaned_data.get("name")

if not val.isdigit():

return val

else:

raise validationerror("使用者名稱不能是純數字!")

# 全域性鉤子

def clean(self):

pwd=self.cleaned_data.get("pwd")

r_pwd=self.cleaned_data.get("r_pwd")

if pwd and r_pwd:

if pwd==r_pwd:

return self.cleaned_data

else:

raise validationerror('兩次密碼不一致!')

else:

return self.cleaned_data

def register(request):

if request.method=="post":

form=userform(request.post)

if form.is_valid():

print(form.cleaned_data) # 所有乾淨的字段以及對應的值

else:

clean_error=form.errors.get('__all__')

return render(request,"register.html",locals())

form=userform()

return render(request,"register.html",locals())

注意

使用區域性鉤子時用一定要用 clean_開頭 加欄位名去命名 如clean_name

全域性錯誤資訊會放到form.errors欄位 __all__對應的值中

django forms 字段型別

1 charfield 對應單行輸入框 2 booleanfield 對應checkbox選擇框 3 choicefield 對應下拉列表選擇框 重要引數choice 4 datafield 對應乙個單行輸入框,但是會自動轉化為日期型別 5 emailfield 對應輸入框,自動驗證是否是郵件位址 ...

正則效驗url

上篇文章講到多主題的解決方案 簡單暴力的tp5多主題方案 為了簡化配置,所以將網域名稱前的協議 http https 擷取了。後台配置時就需要效驗配置的格式是否正確,需要用到的正則 如下 param url 合法格式為 或 return bool function cuscheckurl url d...

常用正則效驗

function regexping regexp,value else if regexp en else if regexp passone errtext 僅允許英文或數字 else if regexp en number else if regexp decimal else if rege...