翻譯 Django文檔 Version 1.5web
https://docs.djangoproject.com/en/1.5/topics/formsdjango
Working with formsapi
關於此文章:工具
此文介紹了Django form。欲進一步瞭解forms API,參考 The Forms API, Form fields 以及 Form and field validation.ui
django.forms 是Django form的庫。spa
能夠使用Django的HttpRequest類來訪問form,你必須遵循一些和form相關的規則。翻譯
使用form會爲你帶來以下好處:orm
1. 使用form小工具(widgets)自動生成HTML的form部分對象
2. 用數據校驗規則來檢查提交(submit)的數據繼承
3. 在發生校驗錯誤時從新展現form
4. 把提交的form數據轉換成相應的Python數據類型
概覽(Overview)
Django form遵循的理念:
Widget
一個對應於一個HTML表單小部件類,例如 <input type="text"> 或 <textarea>. 負責處理小部件渲染成HTML的動做。
Field
負責校驗數據的類,例如EmailField負責確保提交的數據是一個合法的email地址。
Form(表單)
一個field的集合,它知道如何校驗它本身,如何把本身展現成HTML。
Form Mediia
用來渲染一個表單的CSS和JavaScript資源。
Form庫和其它Django組件(database layer, 視圖, 模板)是鬆耦合的。它只依賴Django的settings(一些 django.utils 幫助功能和Django國際化hooks,你不須要實現國際化功能去使用此庫)。
Form對象(Form objects):
一個Form 對象封裝了form fields和必須被知足的校驗規則。用戶須要實現的Form類繼承自django.forms.Form,而且利用了一個可聲明的方式(若是你熟悉django的database)。
舉例來講,考慮一個實現了"contact me"功能的form。
from django import forms
class ContactForm(forms.Form): subject = forms.CharField(max_length=100) message = forms.CharField() sender = forms.EmailField() cc_myself = forms.BooleanField(required=False)
一個form表單由Field對象組成。此時,咱們的form有四個field: subject, message, sender 和 cc_myself. CharField, EmailField 和 BooleanField 是三個可利用的field類型。完整的field列表能夠在Form fields找到。未完待續。