Django基础之Form表单

构建一个表单

假设你想在你的网站上创建一个表单,以获得一个出版社的信息。你需要类似这样的模板:

<form action="/add_publisher/" method="post">    
        <label for="">名称</label>
        <input type="text" name="name">    
        <label for="">地址</label>
        <input type="text" name="address" >  
        <label for="">网址</label>
        <input type="url" name="website" >    

    <input type="submit" value="提交"><br>
</form>

这是一个非常简单的表单。实际应用中,一个表单可能包含几十上百个字段,其中大部分需要预填充,而且我们预料到用户将来回编辑-提交几次才能完成操作。

我们可能需要在表单提交之前,在浏览器端作一些验证。我们可能想使用非常复杂的字段,以允许用户做类似从日历中挑选日期这样的事情,等等。

这个时候,让Django的form表单来为我们完成大部分工作是很容易的。

form表单有两个突出优点:

    1 form表单提交时,数据出现错误,返回的页面中仍可以保留之前输入的数据。

    2 方便地限制字段条件

 

使用Form表单

在应用下新建一个forms.py (该名称可以改变)

forms.py:

from django import forms


class PublisherForm(forms.Form):
    name = forms.CharField(label="名称", max_length=32)
    address = forms.CharField(label="地址", max_length=32)
    website = forms.URLField(label="网址", max_length=64)

上面的代码定义一个Form 类,他有3个字段。

name字段允许的最大长度通过max_length 定义。它完成两件事情。首先,它在HTML 的<input> 上放置一个maxlength="32"(这样浏览器将在第一时间阻止用户输入多于这个数目的字符)。它还意味着当Django 收到浏览器发送过来的表单时,它将验证数据的长度。

Form 的实例具有一个is_valid() 方法,它为所有的字段运行验证的程序。当调用这个方法时,如果所有的字段都包含合法的数据,它将:

  • 返回True
  • 将表单的数据放到cleaned_data属性中。

浏览器第一次渲染出来的完整表单是:

<p><label for="id_name">名称:</label> <input type="text" name="name" maxlength="32" required="" id="id_name"></p>
<p><label for="id_address">地址:</label> <input type="text" name="address" maxlength="32" required="" id="id_address"></p>
<p><label for="id_website">网址:</label> <input type="url" name="website" maxlength="32" required="" id="id_website"></p>

注意它不包含 <form> 标签和提交按钮。我们必须自己在模板中提供它们。

 

posted @ 2018-01-31 22:03  流星之泪  阅读(120)  评论(0)    收藏  举报