Working with forms

翻譯 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. CharFieldEmailField 和 BooleanField 是三個可利用的field類型。完整的field列表能夠在Form fields找到。未完待續。
相關文章
相關標籤/搜索