W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們已經(jīng)簡(jiǎn)單的描述過(guò)了HTML 表單,但是一個(gè)HTML?<form>
?只是其所需的一部分。
在網(wǎng)絡(luò)應(yīng)用的上下文中,“表單”可能指的是那個(gè)HTML?<form>
?,或者指產(chǎn)生它的 Django ?Form
?,或者指它提交時(shí)返回的結(jié)構(gòu)化數(shù)據(jù),或者指這些部分的端到端工作集合。
Django表單系統(tǒng)的核心組件是 ?Form
?類。它與Django模型描述對(duì)象的邏輯結(jié)構(gòu)、行為以及它呈現(xiàn)給我們內(nèi)容的形式的方式大致相同, ?Form
?類描述一張表單并決定它如何工作及呈現(xiàn)。
類似于模型類的字段映射到數(shù)據(jù)庫(kù)字段的方式,表單類的字段會(huì)映射到HTML表單的 ?<input>
? 元素。 ?ModelForm
?通過(guò) ?Form
?映射模型類的字段到HTML表單的 ?<input>
? 元素,Django admin就基于此。
表單字段本身也是類;他們管理表單數(shù)據(jù)并在提交表單時(shí)執(zhí)行驗(yàn)證。 ?DateField
?和 ?FileField
?處理的數(shù)據(jù)類型差別很大,所以必須用來(lái)處理不同的字段。
在瀏覽器中,表單字段以HTML控件(用戶界面的一個(gè)片段)的形式展現(xiàn)給我們。每個(gè)字段類型都有與之相匹配的 控件類 ,但必要時(shí)可以覆蓋。
在Django中渲染一個(gè)對(duì)象的時(shí)候,我們通常:
在模板中渲染表單幾乎與渲染任何其他類型的對(duì)象的一樣,但是存在一些關(guān)鍵性的差異。
如果模型實(shí)例不包含數(shù)據(jù),在模板中對(duì)它做任何處理幾乎沒什么用。但完全有理由用來(lái)渲染一張空表單——當(dāng)我們希望用戶來(lái)填充的時(shí)候就會(huì)這么做。
所以當(dāng)我們?cè)谝晥D中處理模型實(shí)例時(shí),我們一般從數(shù)據(jù)庫(kù)中獲取它。當(dāng)我們處理表單時(shí),我們一般在視圖中實(shí)例化它。
當(dāng)我們實(shí)例化表單時(shí),我們可以選擇讓它為空或者對(duì)它預(yù)先填充,例如使用:
最后一種情況最有趣,因?yàn)檫@使得用戶不僅可以閱讀網(wǎng)站,而且還可以將信息發(fā)回給它。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: