Django 表单

2024 年 8 月 29 日 | 阅读 3 分钟

Django 提供了 Form 类,用于创建 HTML 表单。它描述了表单及其工作方式和外观。

它类似于 ModelForm 类,后者通过使用 Model 创建表单,但它不需要 Model。

表单类的每个字段都映射到 HTML 表单 <input> 元素,并且每个字段本身都是一个类,它管理表单数据并在提交表单时执行验证。

让我们看一个例子,在其中我们也要创建一些字段。

创建了一个 StudentForm,其中包含两个 CharField 类型的字段。Charfield 是一个类,用于在表单中创建 HTML 文本输入组件。

label 用于设置组件的 HTML 标签,max_length 设置输入值的长度。

呈现时,它会在浏览器中生成以下 HTML。

注意:Django 表单不包含 <form> 标签或提交按钮。 我们必须在模板中自己提供这些。

下面表格给出了常用字段及其详细信息。

名称ClassHTML 输入空值
BooleanFieldclass BooleanField(**kwargs)CheckboxInputFalse
CharFieldclass CharField(**kwargs)TextInput您给出的任何 empty_value。
ChoiceFieldclass ChoiceField(**kwargs)选择'' (一个空字符串)
DateFieldclass DateField(**kwargs)DateInput
DateTimeFieldclass DateTimeField(**kwargs)DateTimeInput
DecimalFieldclass DecimalField(**kwargs)NumberInput
EmailFieldclass EmailField(**kwargs)EmailInput'' (一个空字符串)
FileFieldclass FileField(**kwargs)ClearableFileInput
ImageFieldclass ImageField(**kwargs)ClearableFileInput

让我们看一个完整的例子,借助 Django Form 类创建一个 HTML 表单。

在 Django 中构建表单

假设我们要创建一个表单来获取学生信息,使用以下代码。

将此代码放入 forms.py 文件中。

在 Django 中实例化表单

现在,我们需要在 views.py 文件中实例化表单。 请参阅以下代码。

// views.py

将表单的上下文传递到 index 模板中,该模板如下所示

// index.html

在 urls.py 中提供 URL

运行服务器并通过 localhost:8000/index, 访问浏览器上的表单,它将产生以下输出。

django forms localhost index output

尽管对于 <label>/<input> 对还有其他输出选项

  • {{ form.as_table }} 将它们呈现为包装在 <tr> 标签中的表格单元格
  • {{ form.as_p }} 将它们呈现为包装在 <p> 标签中
  • {{ form.as_ul }} 将它们呈现为包装在 <li> 标签中

请注意:我们将不得不自己提供周围的 <table> 或 <ul> 元素。


下一节表单验证