无码狠狠躁久久久久久久网址,四虎永久地址www成人,女人张开腿无遮无挡视频,亚洲熟妇成人精品一区,综合偷自拍亚洲乱中文字幕

加載中...
您的位置:首頁(yè) >焦點(diǎn) > 正文

python-Django-表單基礎(chǔ)概念-全球焦點(diǎn)

2023-04-23 15:54:08 來(lái)源:騰訊云

簡(jiǎn)介

表單是Web應(yīng)用程序中最常用的組件之一,它允許用戶(hù)提交數(shù)據(jù)并與Web應(yīng)用程序交互。在Django中,表單是由Django表單框架處理的,它允許您輕松地創(chuàng)建HTML表單并處理表單數(shù)據(jù)。

定義表單類(lèi)

在Django中,表單類(lèi)是定義表單字段和驗(yàn)證規(guī)則的Python類(lèi)。每個(gè)表單字段都映射到一個(gè)HTML表單元素,并具有相應(yīng)的驗(yàn)證規(guī)則。

表單類(lèi)繼承自django.forms.Form類(lèi),并定義一個(gè)或多個(gè)表單字段。每個(gè)表單字段都是一個(gè)Field類(lèi)的實(shí)例,它定義了字段的類(lèi)型、標(biāo)簽、驗(yàn)證規(guī)則等。


【資料圖】

以下是一個(gè)簡(jiǎn)單的表單類(lèi)示例:

from django import formsclass ContactForm(forms.Form):    name = forms.CharField(max_length=100)    email = forms.EmailField()    message = forms.CharField(widget=forms.Textarea)

在這個(gè)示例中,我們定義了一個(gè)名為ContactForm的表單類(lèi),它包含三個(gè)字段:name、email和message。name字段是CharField類(lèi)型,email字段是EmailField類(lèi)型,message字段是CharField類(lèi)型,但使用了Textarea小部件來(lái)顯示多行文本。

在模板中顯示表單

要在模板中顯示表單,您需要將表單類(lèi)實(shí)例化,并將其傳遞到模板上下文中。然后,在模板中使用Django模板語(yǔ)言(DTL)來(lái)呈現(xiàn)表單字段。

以下是一個(gè)簡(jiǎn)單的模板示例,它顯示上面定義的ContactForm:

{% csrf_token %} {{ form.as_p }}

在這個(gè)示例中,我們使用form.as_p標(biāo)記來(lái)呈現(xiàn)表單字段。as_p標(biāo)記以HTML段落(

)的形式顯示表單字段,每個(gè)字段都有一個(gè)標(biāo)簽和一個(gè)表單元素。

還需要注意的是,我們?cè)诒韱沃邪艘粋€(gè)csrf_token標(biāo)記。這是Django防止跨站請(qǐng)求偽造(CSRF)攻擊的一種機(jī)制,它生成一個(gè)隱藏的表單字段,其中包含一個(gè)隨機(jī)的令牌值。在處理表單提交時(shí),Django將檢查令牌是否有效。

處理表單數(shù)據(jù)

在Django中,表單數(shù)據(jù)是由視圖函數(shù)處理的。當(dāng)用戶(hù)提交表單時(shí),Django將請(qǐng)求發(fā)送到視圖函數(shù),并將表單數(shù)據(jù)作為POST請(qǐng)求參數(shù)傳遞給函數(shù)。

以下是一個(gè)處理表單數(shù)據(jù)的簡(jiǎn)單視圖函數(shù)示例:

from django.shortcuts import renderfrom django.http import HttpResponseRedirectfrom .forms import ContactFormdef contact(request):    if request.method == "POST":        form = ContactForm(request.POST)        if form.is_valid():            name = form.cleaned_data["name"]            email = form.cleaned_data["email"]            message = form.cleaned_data["message"]            # 處理表單數(shù)據(jù)            return HttpResponseRedirect("/thanks/")    else:        form = ContactForm()    return render(request, "contact.html", {"form": form})

在這個(gè)示例中,我們首先檢查請(qǐng)求的HTTP方法是否為POST。如果是POST,我們使用提交的數(shù)據(jù)初始化表單類(lèi),并檢查表單數(shù)據(jù)是否有效。如果表單數(shù)據(jù)有效,則從表單中提取數(shù)據(jù)并進(jìn)行相應(yīng)的處理。最后,我們將用戶(hù)重定向到一個(gè)“感謝”頁(yè)面。

如果請(qǐng)求的HTTP方法不是POST,則說(shuō)明這是第一次請(qǐng)求該頁(yè)面,我們將表單類(lèi)實(shí)例化,并將其傳遞到渲染模板的上下文中。

關(guān)鍵詞:

推薦內(nèi)容