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找到。未完待续。