django帶有乙個form庫,成為django.forms,這個庫可以處理html表單顯示以及驗證。表單框架最主要的用法是為每乙個將要處理的html的『』定義乙個類。
在books中專門建立乙個關於forms的檔案,forms.py
from django import forms
class contactform(forms.form):
subject=forms.charfield()
#required=false表示該字段是選填的
email=forms.emailfield(required=false)
message=forms.charfield()
>>> from books.forms import contactform
>>> f=contactform()
>>> f
>>> print(f)
subject:
email:
message:
預設輸出按照html的
格式,但是開閉標記沒有包含於輸出當中。這樣你就可以新增額外的行或者自定義格式。
>>>
#使用is_valid()方法,如果合法則返回true
f=contactform()
>>> f.is_valid()
true
#如果不合法返回false,可以檢視每個欄位的出錯資訊
>>> f=contactform()
>>> f.is_valid()
false
>>> f['subject'].errors
['this field is required.']
>>> f['email'].errors
>>> f=contactform()
>>> f.is_valid()
true
>>> f.cleaned_data
contact form只涉及字串型別,它們會被清理成unicode物件,如果使用整數或日期型,form方法會確保方法使用合適的python整數型或datetime.data型物件。
在檢視中使用form物件
在urls.py中新增對映關係然後執行服務。
改變字段顯示
class contactform(forms.form):
subject=forms.charfield()
#required=false表示該字段是選填的
email=forms.emailfield(required=false)
#改變了字段型別
message=forms.charfield(widget=forms.textarea)
forms框架把每乙個欄位的顯示邏輯部分分離到一組部件(widget)中。每乙個字段型別都擁有乙個預設的部件,可以替換掉預設部件或者提供乙個定義的部件。field表現校驗邏輯,而部件表示顯示邏輯。
設定字段內容長度
class contactform(forms.form):
subject=forms.charfield(max_length=100,min_length=50)
#required=false表示該字段是選填的
email=forms.emailfield(required=false)
message=forms.charfield(widget=forms.textarea)
設定初始值
)return render_to_response('contact_form.html', )傳入初始值資料和傳入資料繫結表單是有區別的,如果僅傳入初始值資料,表但是unbound的,那意味著它沒有錯誤訊息。
自定義校驗規則
django的form系統會自動尋找匹配的函式方法,該方法以clean_開有,並以欄位名結束。如果有這樣的方法,他將在校驗時被呼叫。
class contactform(forms.form):
subject=forms.charfield(max_length=100,min_length=50)
#required=false表示該字段是選填的
email=forms.emailfield(required=false)
message=forms.charfield(widget=forms.textarea)
def clean_message(self):
message=self.cleaned_data['message']
num_word=len(message.split())
if num_word < 4:
raise forms.validationerror("not enough words")
return message
指定標籤
class contactform(forms.form):
subject=forms.charfield(max_length=100,min_length=50)
#required=false表示該字段是選填的
email=forms.emailfield(required=false,label='your e-mail')
message=forms.charfield(widget=forms.textarea)
Django入門 MTV開發模式
mtv開發模式整體結構圖 每一部分對應到工程的檔案分別是 檔案對應部分 models.py views.py urls.py 路由部分 m models 和v views 都有了,t templates 呢?templates就是一些html,js,css檔案。修改之前的例子,使其能夠返回乙個htm...
Django配置表單
將html與css分離 將html檔案放入templates檔案中 css放入建立的static css檔案中 方便管理 databases databases templates templates 中 將根目錄與html做乙個連線 dirs os.path.join base dir,templ...
Django 表單使用
django提供對表單處理的支援,可以簡化並自動化大部分的表單處理工作。表單系統的核心部分是django 的form類。django 的資料庫模型描述乙個物件的邏輯結構 行為以及展現給我們的方式,與此類似,form類描述乙個表單並決定它如何工作和展現。假如我們想在網頁中建立乙個表單,用來獲取使用者想...