Django form模塊使用心得


 

最近用Django 寫了一個網站,現在來分享一下對Django form 的一些心得。 

一,創建一個表單 
創建一個Form表單有兩種方式: 
第一種方式是繼承於forms.Form,的一個子類,通過在form中選擇你需要的類型來規定表單之 
中字段的類型 

Java代碼   收藏代碼
  1. class ContactForm(forms.Form):  
  2.     subject = forms.CharField(max_length=100)  
  3.     message = forms.CharField(required=False)  



其中 django 內置了很多的字段,讓開發者可以直接使用,並且內置了這些字段的檢驗使站點中的表單數據檢測變得方便,也提供了一些可選擇的檢驗規則如required=False等,具體的可以去Django 官網查詢API。 

第二種 是直接利用數據庫中以有的表來生成表單項, 這對於一個管理系統類型的網站 比較有用,因為如果一個站點有大量的實體數據需要讓用戶輸入,那么就不必重新花費時間來定義表單,只需要直接的和 model 進行關聯就可以了如: 

Java代碼   收藏代碼
  1. class BookForm(ModelForm):  
  2.     class Meta:  
  3.         model = Book  



這樣就可以 直接將 book 中的所有字段 直接生成一張 與之對應的表單,也許你不想所有的模型中的字段用戶都可以填寫,那么你可以用 

Java代碼   收藏代碼
  1. class Meta:  
  2.         model = Author  
  3.         fields = ('name', 'title')  
  4. class Meta:  
  5.         model = Author  
  6.         exclude = ('birth_date',)  



exclude 屬性來規定哪些字段你不想加入在表單之中。 
fields屬性來規定哪些你要加入表單之中,當然兩個屬性,你只要設定一個就可以了 

二,修飾這個表單 
因為用django自動生成的表單,實現的內容很多是你不想要的,所以要創造一個獨特的表。 

改變字段在模板中顯示的類型 
你繼承於ModelForm來創建一個表單的話,Django會自動的將外鍵字段轉化成一個select的控件,並且通過下拉框來選擇一個值,這可能是你不想要的,因為你可能不希望用戶來填寫外鍵的內容,這些外鍵的內容是系統自動關聯分配的,所以,你就必須更改表單項的實現方式。 

Java代碼   收藏代碼
  1. model = Author  
  2.         fields = ('name', 'title', 'birth_date')  
  3.         widgets = {  
  4.             'name': Textarea(attrs={'cols': 80, 'rows': 20}),  
  5.         }  



通過widgets這個參數,手動的設定字段以何種input類型顯示 
更改報錯信息 
在django表單系統之中,如果在處理表中中 使用 is_valid()  
方法並且表單檢測發現表單內容不符合規則,那么他將返回一個表單,表單之中沒一樣中 form.name.errors 就是報錯信息,雖然現在在服務器端檢驗表單字段的實用價值已經越來越小了,但是 俗話說, 永遠不要相信前台腳本,永遠不要相信用戶,他們很可能利用你沒有后台檢驗的功能而 搞出很多的事情來,所以盡管前台已經做了檢驗,但是后台仍然要做一次檢驗,更改默認的報錯信息是這樣的 

Java代碼   收藏代碼
  1. name = forms.CharField(error_messages={'required': 'Please enter your name'})  



在創建這個 表單的時段的時候 傳入如下的參數,就可以修改報錯信息,當然你必須知道具體錯誤的名稱 如“requeired”這些名稱可以在API 中找到 
三,使用這個表單 
在視圖中使用 
在視圖中使用一個表單 無非是兩種功能,一個是創建一個表單讓用戶來填寫信息,另一個是處理表單中的數據。 
創建一個表單 就是直接創建一個 實體表單的對象 
form = ContactForm(),里面有幾個比較重要的參數:auto_id=False 
這個參數 主要是表示 是否在表單中生成 id ,因為有的時候你不想讓你每個表單的字段都對應一個id, 如果生成 默認id是 id_form字段名字. 
設置默認值 
可以在創建 表單對象時傳入如下參數initial={} 
這是一個字典參數,對應每個字段的默認值, 可以在定義表的時候在沒定義一個時段 中添加 initial='http://' 來設定默認值 
更新數據 
你可能需要 用一個 model實例來初始化他,這樣就可以達到表單更新數據 
f = ArticleForm(instance=a) 其中 a 是article 的一個model實例。 

提取數據 

在 處理 post 請求時候, 通過 f = ArticleForm(request.POST)來獲取一個填有用戶數據的form 
在調用了 is_valid 方法以后 就可以通過 f.cleaned_data ,返回一個 裝有數據的字典 
總結: 
上面直接 介紹很少的 form 的功能,只是讓大家了解一下 django form,具體的要去官方API介紹還可以,英文也比較好理解,就我對 django表單而言, 我認為它是方便好用的,但是盡量大家不要過分的依賴django所提供的功能,盡管他提供了 強大的功能,很多事情還是要一步一步來,過分的依賴 它提供的功能,會造成你整個的系統變得非常不靈活。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM