Django4.0 使用表單-Django中的表單

2022-03-16 17:58 更新

我們已經(jīng)簡單的描述過了HTML 表單,但是一個HTML?<form>?只是其所需的一部分。

在網(wǎng)絡應用的上下文中,“表單”可能指的是那個HTML?<form>?,或者指產(chǎn)生它的 Django ?Form?,或者指它提交時返回的結構化數(shù)據(jù),或者指這些部分的端到端工作集合。

Django的 Form 類

Django表單系統(tǒng)的核心組件是 ?Form ?類。它與Django模型描述對象的邏輯結構、行為以及它呈現(xiàn)給我們內容的形式的方式大致相同, ?Form ?類描述一張表單并決定它如何工作及呈現(xiàn)。
類似于模型類的字段映射到數(shù)據(jù)庫字段的方式,表單類的字段會映射到HTML表單的 ?<input>? 元素。 ?ModelForm ?通過 ?Form ?映射模型類的字段到HTML表單的 ?<input>? 元素,Django admin就基于此。
表單字段本身也是類;他們管理表單數(shù)據(jù)并在提交表單時執(zhí)行驗證。 ?DateField ?和 ?FileField ?處理的數(shù)據(jù)類型差別很大,所以必須用來處理不同的字段。
在瀏覽器中,表單字段以HTML控件(用戶界面的一個片段)的形式展現(xiàn)給我們。每個字段類型都有與之相匹配的 控件類 ,但必要時可以覆蓋。

實例化、處理和渲染表單

在Django中渲染一個對象的時候,我們通常:

  • 在視圖中獲取它(例如從數(shù)據(jù)庫中取出)
  • 將它傳遞給模板上下文
  • 使用模板變量將它擴展為HTML標記

在模板中渲染表單幾乎與渲染任何其他類型的對象的一樣,但是存在一些關鍵性的差異。

如果模型實例不包含數(shù)據(jù),在模板中對它做任何處理幾乎沒什么用。但完全有理由用來渲染一張空表單——當我們希望用戶來填充的時候就會這么做。

所以當我們在視圖中處理模型實例時,我們一般從數(shù)據(jù)庫中獲取它。當我們處理表單時,我們一般在視圖中實例化它。

當我們實例化表單時,我們可以選擇讓它為空或者對它預先填充,例如使用:

  • 來自已保存的模型實例的數(shù)據(jù)(例如在管理編輯表單的情況下)
  • 我們從其他來源獲取的數(shù)據(jù)
  • 從前面一個HTML 表單提交過來的數(shù)據(jù)

最后一種情況最有趣,因為這使得用戶不僅可以閱讀網(wǎng)站,而且還可以將信息發(fā)回給它。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號