Django框架之表單(續二)
今天的這篇博客將是Django學習筆記博客的最后一篇,基本每周最少一篇的Django框架學習,堅持到今天也實屬不易,當然了,這個框架的學習僅僅是Django框架的基礎部分了,不過也夠我們平時搭個簡易的網站或者個人博客什么的。希望通過這一系列的博文,讓大家也從中體會到Django框架的魅力所在,如果很不幸,你沒有體會到,只能說明我水平有限,無法將如此美麗的事物展示與你,閑話少說,下面開始繼續學習表單的相關知識。
編寫Contact表單
這個表單包括用戶提交的反饋信息,一個可選的e-mail回信地址。 當這個表單提交並且數據通過驗證后,系統將自動發送一封包含題用戶提交的信息的e-mail給站點工作人員。
我們從contact_form.html模板入手:

我們定義了三個字段: 主題,e-mail和反饋信息。 除了e-mail字段為可選,其他兩個字段都是必填項。 注意,這里我們使用method=”post”而非method=”get”,因為這個表單會有一個服務器端的操作:發送一封e-mail。 並且,我們復制了前一個模板search_form.html中錯誤信息顯示的代碼。
如果我們順着上一節編寫search()視圖的思路,那么一個contact()視圖代碼應該像這樣:
現在來分析一下以上的代碼:
contact()視圖可以正常工作,但是她的驗證功能有些復雜。 想象一下假如一個表單包含一打字段,我們真的將必須去編寫每個域對應的if判斷語句?
另外一個問題是表單的重新顯示。若數據驗證失敗后,返回客戶端的表單中各字段最好是填有原來提交的數據,以便用戶查看哪里出現錯誤(用戶也不需再次填寫正確的字段值)。 我們可以手動地將原來的提交數據返回給模板,並且必須編輯HTML里的各字段來填充原來的值。
在視圖中使用Form類
Django帶有一個form庫,稱為django.forms,這個庫可以處理我們本章所提到的包括HTML表單顯示以及驗證。 接下來我們來深入了解一下form庫,並使用它來重寫contact表單應用。
這看上去簡單易懂,並且很像在模塊中使用的語法。 表單中的每一個字段(域)作為Form類的屬性,被展現成Field類。這里只用到CharField和EmailField類型。 每一個字段都默認是必填。要使email成為可選項,我們需要指定required=False。
接下來,我們在使用它重寫contact表單應用:
看看,我們能移除這么多不整齊的代碼! Django的forms框架處理HTML顯示、數據校驗、數據清理和表單錯誤重現。
私人定制Form設計
修改form的顯示的最快捷的方式是使用CSS。 尤其是錯誤列表,可以增強視覺效果。自動生成的錯誤列表精確的使用“<ul class=”errorlist”>”,這樣,我們就可以針對它們使用CSS。 下面的CSS讓錯誤更加醒目了:
雖然,自動生成HTML是很方便的,但是在某些時候,你會想覆蓋默認的顯示。 {{form.as_table}}和其它的方法在開發的時候是一個快捷的方式,form的顯示方式也可以在form中被方便地重寫。
{{ form.message.errors }} 會在 <ul class="errorlist"> 里面顯示,如果字段是合法的,或者form沒有被綁定,就顯示一個空字符串。 我們還可以把 form.message.errors 當作一個布爾值或者當它是list在上面做迭代, 例如:
在校驗失敗的情況下, 這段代碼會在包含錯誤字段的div的class屬性中增加一個”errors”,在一個有序列表中顯示錯誤信息。
好了,Django的學習筆記到此就正式結束了,基本的網站搭建管理這點點知識已經足以,恩,基本情況就是醬紫了。
PS:本博客歡迎轉發,但請注明博客地址及作者~
博客地址:http://www.cnblogs.com/voidy/
<。)#)))≦