【資料圖】
表單驗證器
表單驗證器是檢查整個表單數(shù)據(jù)是否符合特定要求的函數(shù)。表單驗證器通常用于檢查表單字段之間的關(guān)系或?qū)Ρ韱螖?shù)據(jù)進行全局驗證。我們可以通過在表單類中定義一個clean
方法來編寫表單驗證器。
例如,以下是一個表單類,它包含兩個密碼字段,并確保它們的值匹配:
from django import formsclass ContactForm(forms.Form): name = forms.CharField(label="Your Name", max_length=100) email = forms.EmailField(label="Your Email") message = forms.CharField(widget=forms.Textarea) def clean_message(self): message = self.cleaned_data.get("message") if len(message.strip()) < 5: raise forms.ValidationError("Message is too short.") return message
在這個示例中,我們定義了一個名為ContactForm
的表單,它包含三個字段:name
,email
和message
。name
和email
字段都是字符字段,而message
字段是一個多行文本字段。
我們還定義了一個名為clean_message
的表單驗證方法。在這個方法中,我們首先獲取表單的message
字段,并將其清除左右兩側(cè)的空格。然后,我們檢查該字段是否少于5個字符,如果是,我們將引發(fā)一個ValidationError
異常。否則,我們將返回清理后的message
字段。
在視圖中,我們可以通過以下方式處理提交的表單:
from django.shortcuts import renderfrom .forms import ContactFormdef contact(request): if request.method == "POST": form = ContactForm(request.POST) if form.is_valid(): # 處理表單數(shù)據(jù) name = form.cleaned_data["name"] email = form.cleaned_data["email"] message = form.cleaned_data["message"] # ... else: form = ContactForm() return render(request, "contact.html", {"form": form})
在這個示例中,我們首先檢查請求方法是否為POST。如果是,我們將實例化一個ContactForm
對象,并將請求數(shù)據(jù)傳遞給它。然后,我們檢查表單是否有效。如果有效,我們將使用cleaned_data
字典來獲取驗證通過的表單數(shù)據(jù),并進行進一步處理。否則,我們將返回一個帶有錯誤表單的ContactForm
對象。
在模板中,我們可以使用以下代碼來呈現(xiàn)表單:
在這個示例中,我們使用{{ form.as_p }}
模板標記來呈現(xiàn)表單。這將以段落形式呈現(xiàn)表單字段。我們還包含了一個名為csrf_token
的標記,它將在處理POST請求時使用,以防止跨站點請求偽造攻擊。
標簽:
- python-Django-表單驗證(二)
- 【世界獨家】俄財長說七成俄中貿(mào)易已轉(zhuǎn)為本幣結(jié)算
- 石井俊也-當前熱文
- 當前快播:“三看”4.5%:這個數(shù)字不簡單!
- 焦點短訊!2023年一季度徐礦集團利潤超10億元 同比增長46%
- 全球關(guān)注:林允穿彩色吊帶扎雙馬尾 俏皮wink妝容甜美嬌俏動人
- 焦點熱門:雷克薩斯新GX年底前亮相 尺寸升級 保留非承載架構(gòu)
- 焦點短訊!火山的女兒骰子游戲怎么玩 骰子游戲攻略玩法教學(xué)[多圖]
- 上海市2023年碳達峰碳中和及節(jié)能減排重點工作任務(wù)和分工表 快播
- 今日關(guān)注:LV母公司路威酩軒集團成為首個市值超5000億美元的歐洲上市公司