Django開發入門 表單

2021-08-22 14:55:49 字數 3825 閱讀 1322

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類描述乙個表單並決定它如何工作和展現。假如我們想在網頁中建立乙個表單,用來獲取使用者想...