1. 程式人生 > >forms元件(註冊使用者講解)(校驗欄位功能,渲染模板功能,渲染錯誤資訊功能,區域性鉤子渲染錯誤資訊,全域性鉤子渲染錯誤資訊)

forms元件(註冊使用者講解)(校驗欄位功能,渲染模板功能,渲染錯誤資訊功能,區域性鉤子渲染錯誤資訊,全域性鉤子渲染錯誤資訊)

forms元件

from django import forms

class Myforms(forms.Form):
    name = forms.CharField(max_length=8,min_length=3 ,label='使用者名稱',
                           error_messages={'max_length':"最長是8","min_length":'最短是3','required':'這個必須填'},
                           widget=widgets.TextInput(attrs={"class
":"form-control","id":"name"}) ) pwd = forms.CharField(max_length=8,min_length=3,label='密碼' ,required=True, error_messages={'max_length':"最長是8","min_length":'最短是3','required':'這個必須填'}, widget=widgets.PasswordInput(attrs={"
class":"form-control","id":"pwd"}) ) re_pwd = forms.CharField(max_length=8, min_length=3, label='確認密碼', required=True, error_messages={'max_length': "最長是8", "min_length": '最短是3', 'required': '這個必須填'}, widget=widgets.PasswordInput(attrs={"
class":"form-control","id":"re_pwd"}) ) email = forms.EmailField(label='郵箱',error_messages={'required':'這個必須填','invalid':'不符合郵箱格式'}, widget=widgets.EmailInput(attrs={"class":"form-control","id":"email"}) ) #區域性鉤子 def clean_name(self): name = self.cleaned_data.get('name') names = models.User.objects.all() print(name) print(names) for i in names: if i.name == name: raise ValidationError('該名字已註冊') return name #全域性鉤子 def clean(self): pwd = self.cleaned_data.get('pwd') re_pwd = self.cleaned_data.get('re_pwd') if pwd == re_pwd: return self.cleaned_data else: raise ValidationError('兩次密碼不一致')
 

(一)校驗欄位功能

myform = Myforms({"name":'lxx',"pwd":'123'})
    myform.is_valid()      判斷校驗是否成功
    myform.cleaned_data  校驗成功通過的資料
    myform.errors   校驗錯誤的資訊
    myform.errors[0]   取其中一條
    欄位也有錯誤資訊功能
    myform.errors['__all__'][0]  全域性鉤子資訊