亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

詳解Django中的form庫的使用

2020-01-04 18:02:34
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了詳解Django中的form庫的使用,Django是最為著名的Python編程框架,需要的朋友可以參考下

Django帶有一個form庫,稱為django.forms,這個庫可以處理我們本章所提到的包括HTML表單顯示以及驗證。 接下來我們來深入了解一下form庫,并使用她來重寫contact表單應用。

Django的newforms庫

在Django社區上會經??吹絛jango.newforms這個詞語。當人們討論django.newforms,其實就是我們本章里面介紹的django.forms。

改名其實有歷史原因的。 當Django一次向公眾發行時,它有一個復雜難懂的表單系統:django.forms。后來它被完全重寫了,新的版本改叫作:django.newforms,這樣人們還可以通過名稱,使用舊版本。 當Django 1.0發布時,舊版本django.forms就不再使用了,而django.newforms也終于可以名正言順的叫做:django.forms。

表單框架最主要的用法是,為每一個將要處理的HTML的``

`` 定義一個Form類。 在這個例子中,我們只有一個`` `` ,因此我們只需定義一個Form類。 這個類可以存在于任何地方,甚至直接寫在`` views.py`` 文件里也行,但是社區的慣例是把Form類都放到一個文件中:forms.py。在存放`` views.py`` 的目錄中,創建這個文件,然后輸入:

 

 

 
  1. from django import forms 
  2.  
  3. class ContactForm(forms.Form): 
  4. subject = forms.CharField() 
  5. email = forms.EmailField(required=False) 
  6. message = forms.CharField() 

這看上去簡單易懂,并且很像在模塊中使用的語法。 表單中的每一個字段(域)作為Form類的屬性,被展現成Field類。這里只用到CharField和EmailField類型。 每一個字段都默認是必填。要使email成為可選項,我們需要指定required=False。

讓我們鉆研到Python解釋器里面看看這個類做了些什么。 它做的第一件事是將自己顯示成HTML:

 

 
  1. >>> from contact.forms import ContactForm 
  2. >>> f = ContactForm() 
  3. >>> print f 
  4. <tr><th><label for="id_subject">Subject:</label></th><td><input type="text" name="subject" id="id_subject" /></td></tr> 
  5. <tr><th><label for="id_email">Email:</label></th><td><input type="text" name="email" id="id_email" /></td></tr> 
  6. <tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" /></td></tr> 

為了便于訪問,Django用``

默認輸出按照HTML的<`` table`` >格式,另外有一些其它格式的輸出:

 

 
  1. >>> print f.as_ul() 
  2. <li><label for="id_subject">Subject:</label> <input type="text" name="subject" id="id_subject" /></li> 
  3. <li><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></li> 
  4. <li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></li> 
  5. >>> print f.as_p() 
  6. <p><label for="id_subject">Subject:</label> <input type="text" name="subject" id="id_subject" /></p> 
  7. <p><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></p> 
  8. <p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></p> 

請注意,標簽

、

 

這些類方法只是一般情況下用于快捷顯示完整表單的方法。 你同樣可以用HTML顯示個別字段:

?

    、的開閉合標記沒有包含于輸出當中,這樣你就可以添加額外的行或者自定義格式。
 
  1. >>> print f['subject'
  2. <input type="text" name="subject" id="id_subject" /> 
  3. >>> print f['message'
  4. <input type="text" name="message" id="id_message" /> 

Form對象做的第二件事是校驗數據。 為了校驗數據,我們創建一個新的對Form象,并且傳入一個與定義匹配的字典類型數據:

 

 
  1. >>> f = ContactForm({'subject''Hello''email''adrian@example.com''message''Nice site!'}) 

一旦你對一個Form實體賦值,你就得到了一個綁定form:

 

 
  1. >>> f.is_bound 
  2. True 

調用任何綁定form的is_valid()方法,就可以知道它的數據是否合法。 我們已經為每個字段傳入了值,因此整個Form是合法的:

 

 
  1. >>> f.is_valid() 
  2. True 

如果我們不傳入email值,它依然是合法的。因為我們指定這個字段的屬性required=False:

 

 
  1. >>> f = ContactForm({'subject''Hello''message''Nice site!'}) 
  2. >>> f.is_valid() 
  3. True 

但是,如果留空subject或message,整個Form就不再合法了:

  1. >>> f = ContactForm({'subject''Hello'}) 
  2. >>> f.is_valid() 
  3. False 
  4. >>> f = ContactForm({'subject''Hello''message'''}) 
  5. >>> f.is_valid() 
  6. False 

你可以逐一查看每個字段的出錯消息:

 

 
  1. >>> f = ContactForm({'subject''Hello''message'''}) 
  2. >>> f['message'].errors 
  3. [u'This field is required.'
  4. >>> f['subject'].errors 
  5. [] 
  6. >>> f['email'].errors 
  7. [] 

每一個邦定Form實體都有一個errors屬性,它為你提供了一個字段與錯誤消息相映射的字典表。

 

 
  1. >>> f = ContactForm({'subject''Hello''message'''}) 
  2. >>> f.errors 
  3. {'message': [u'This field is required.']} 

最終,如果一個Form實體的數據是合法的,它就會有一個可用的cleaned_data屬性。 這是一個包含干凈的提交數據的字典。 Django的form框架不但校驗數據,它還會把它們轉換成相應的Python類型數據,這叫做清理數據。

 

 
  1. >>> f = ContactForm({subject': Hello, email: adrian@example.com, message: Nice site!}) 
  2. >>> f.is_valid() 
  3. True 
  4. >>> f.cleaned_data 
  5. {message': uNice site!, email: uadrian@example.com, subject: uHello} 

我們的contact form只涉及字符串類型,它們會被清理成Unicode對象。如果我們使用整數型或日期型,form框架會確保方法使用合適的Python整數型或datetime.date型對象。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区四区视频| 欧美巨猛xxxx猛交黑人97人| 亚洲欧美激情在线视频| 久久国产视频网站| 91国产精品91| 亚洲自拍偷拍福利| 欧美午夜精品在线| 精品视频在线播放免| 97精品国产97久久久久久免费| 国内揄拍国内精品少妇国语| 国产精品男人的天堂| 久久99精品久久久久久琪琪| 亚洲www在线| 日本三级久久久| 成人伊人精品色xxxx视频| 国产亚洲一区精品| 亚洲人成在线观看网站高清| 最近2019中文字幕mv免费看| 欧美激情免费观看| 亚洲欧美制服综合另类| 羞羞色国产精品| 亚洲国产欧美一区二区丝袜黑人| 亚洲精品之草原avav久久| 动漫精品一区二区| 中文字幕欧美专区| 欧美日本高清视频| 国产z一区二区三区| 国产精品网红福利| 欧美午夜无遮挡| 亚洲wwwav| 国产精品久久久久久久app| 国产91精品网站| 国产不卡一区二区在线播放| 一个人看的www欧美| 亚洲风情亚aⅴ在线发布| 日本国产高清不卡| 国产综合久久久久久| 日韩精品欧美激情| 欧美电影免费观看高清完整| 欧美高清视频一区二区| 国产一区二区在线免费视频| 国产一区二区三区欧美| 激情av一区二区| 少妇高潮 亚洲精品| 午夜免费在线观看精品视频| 欧美另类极品videosbestfree| 在线精品国产欧美| 欧美成人精品在线| 国产精品高清在线观看| 在线播放国产一区中文字幕剧情欧美| 欧美乱大交xxxxx| 国产噜噜噜噜噜久久久久久久久| 亚洲色图第三页| 亚洲女人初尝黑人巨大| 欧美日韩高清在线观看| 久久91亚洲精品中文字幕奶水| 精品激情国产视频| 国产欧美va欧美va香蕉在线| 亚洲偷熟乱区亚洲香蕉av| 亚洲成人av片在线观看| 久久韩剧网电视剧| 亚洲福利视频网| 亚洲精品动漫100p| 国产精品久久久久一区二区| 国产女人18毛片水18精品| 亚洲欧美色婷婷| 欧美巨猛xxxx猛交黑人97人| 国产精品久久婷婷六月丁香| 疯狂做受xxxx欧美肥白少妇| 亚洲一区二区免费在线| 一区二区三区四区视频| 久久久久久有精品国产| 亚洲欧美另类在线观看| 欧美一级大胆视频| 国产精品99久久久久久久久| 在线亚洲午夜片av大片| 久久91亚洲人成电影网站| 91天堂在线观看| 欧美香蕉大胸在线视频观看| 97精品在线视频| 九九久久久久久久久激情| 久久精视频免费在线久久完整在线看| www高清在线视频日韩欧美| 久久久国产精品x99av| 成人网在线观看| 日韩电影在线观看永久视频免费网站| 欧美黑人巨大精品一区二区| 国产精品h在线观看| 欧美在线视频免费观看| 久久久国产精品亚洲一区| 国产成人精品综合久久久| 九九热这里只有精品免费看| 欧美一级免费视频| 日本19禁啪啪免费观看www| 中文字幕少妇一区二区三区| 欧美人在线观看| 国产精品一区电影| 亚洲第一免费网站| 日韩欧美黄色动漫| 久久99视频精品| 欧美色播在线播放| 欧美日本在线视频中文字字幕| 日韩欧美视频一区二区三区| 久久久久久久久久亚洲| 欧美日韩国产999| 大伊人狠狠躁夜夜躁av一区| 日本亚洲欧洲色| 国产91精品在线播放| 欧美日韩福利在线观看| 亚洲天堂一区二区三区| 国产精品爽黄69| 色哟哟网站入口亚洲精品| 亚洲欧洲午夜一线一品| 欧美日韩国产123| 日韩欧美精品中文字幕| 午夜精品久久久久久久99热| 欧美成人午夜激情在线| 国产午夜精品全部视频在线播放| 欧美尺度大的性做爰视频| 91精品综合视频| 伊人久久大香线蕉av一区二区| 亚洲一区二区少妇| 精品少妇v888av| 久久综合久久美利坚合众国| 高跟丝袜欧美一区| 亚洲女人天堂网| 性日韩欧美在线视频| 国产不卡精品视男人的天堂| 国产一区二区av| 一本大道久久加勒比香蕉| 精品国产一区二区三区久久狼5月| 91av视频在线播放| 国产精品久久久av久久久| 粉嫩老牛aⅴ一区二区三区| 福利二区91精品bt7086| 欧美电影《睫毛膏》| 国产欧美日韩中文字幕在线| 国产精品麻豆va在线播放| 欧美重口另类videos人妖| 国产精品手机播放| 日韩精品黄色网| 伊人伊人伊人久久| 日韩欧美中文第一页| 日韩国产精品亚洲а∨天堂免| 亚洲第一精品夜夜躁人人爽| 日韩禁在线播放| 不卡毛片在线看| 青青草原一区二区| 欧美日韩国内自拍| 色噜噜狠狠色综合网图区| 欧美国产日韩中文字幕在线| 亚州精品天堂中文字幕| 亚洲a级在线观看| 日韩欧美中文字幕在线播放| 久久精品欧美视频| 亚洲毛茸茸少妇高潮呻吟| 欧美中文字幕视频在线观看| 日韩av免费在线观看| 国产精品海角社区在线观看| 久久久久久久999| 美日韩丰满少妇在线观看| 欧美电影在线观看完整版| 久久久免费av| 国产综合久久久久|