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> 标签和提交按钮。我们必须自己在模板中提供它们。

浙公网安备 33010602011771号