日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part46)--form表单验证

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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表单验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。