Django(part46)--form表单验证
學習筆記,僅供參考
文章目錄
- form表單驗證
- 舉個例子
form表單驗證
form提供表單和字段驗證,我們可以使用form.is_valid() 方法進行表單驗證,若該方法返回值為True,則表示當前表單合法,若返回值為False,則說明表單驗證出現問題。
注意!這里,以及下面的form指的是forms.Form類的對象。
舉個例子
我們基于上一個Blog里的mywebsite_bookstore項目,舉一個例子來學習form表單驗證。
如果我們沒有進行表單驗證操作,那么,當我們進行注冊時,姓名可以填寫任意格式和任意長度的數據,這顯然不符合一般的填寫要求,且不方便我們處理:
為了使用戶規范的填寫注冊信息,我們需要進行表單驗證,即不按照規范進行信息填寫,就注冊不成功
在userinfo應用下的views.py模塊中,我們對視圖函數test_form進行修改,增加一個表單驗證功能:
def test_form(request):if request.method == "GET":myform = forms.RegForm()#創建對象return render(request, 'userinfo/test_form.html',locals())elif request.method == "POST":myform = forms.RegForm(request.POST)if myform.is_valid():#檢驗表單中數據是否合法print(myform.cleaned_data)#輸出表單類中所有屬性值組成的字典return HttpResponse("<h2>表單提交成功!</h2> <br>" + str(myform.cleaned_data))else:return HttpResponse("<h2>表單數據驗證失敗!</h2>")注意!若想要myform.is_valid()方法返回True,則需要下面3個條件同時驗證成功:
- 對forms.xxxField()方法中的參數值進行驗證,驗證成功返回None,驗證失敗拋出forms.ValidationError異常
- 對form.clean_屬性名(self)方法中的屬性進行驗證,驗證成功返回屬性值,驗證失敗拋出forms.ValidationError異常
- 對form.clean(self)方法(表單的整體結構)進行驗證,驗證成功返回 self.cleaned_data,驗證失敗拋出forms.ValidationError異常
現在,我們編輯forms.py,添加兩個方法,進行驗證:
# -*- coding: utf-8 -*- from django import formsclass RegForm(forms.Form):username = forms.CharField(label = "輸入昵稱")password = forms.CharField(label = "輸入密碼",widget=forms.PasswordInput)passwordRepeat = forms.CharField(label = "再次輸入密碼",widget=forms.PasswordInput)tele = forms.CharField(label = "手機號", required = False)email = forms.CharField(label = "郵箱", required = False,widget=forms.EmailInput)#<input type="text">def clean_username(self):#對單個屬性進行檢驗username = self.cleaned_data["username"]if (len(username) < 6) | (len(username) > 12):raise forms.ValidationError("用戶名必須在6~12個字符之間!")return usernamedef clean(self):#屬性之間進行檢驗(整體檢驗)pwd1 = self.cleaned_data["password"]pwd2 = self.cleaned_data["passwordRepeat"]if pwd1 != pwd2:raise forms.ValidationError("兩次輸入不一致!")return self.cleaned_data注意,views.py模塊中test_form視圖方法里的is_valid()方法會自動調用clean_username函數和clean函數。
我們向http://127.0.0.1:8000/userinfo/test_form/發起請求,并填寫符合要求的注冊信息:
點擊注冊,顯示表單提交成功:
當我們填寫的用戶名大于12個字符時,再點擊注冊,Django就會提示我們驗證失敗:
總結
以上是生活随笔為你收集整理的Django(part46)--form表单验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 唯美带君字的有诗意古风网名466个
- 下一篇: 好听罕见绝不重名的男孩名字320个 好听