如何在 Django 中定义表单?

推荐答案

在 Django 中定义表单可以通过两种主要方式:使用 forms.Form 类或使用 forms.ModelForm 类。以下是两种方式的示例:

使用 forms.Form

使用 forms.ModelForm

本题详细解读

1. 使用 forms.Form

forms.Form 类是 Django 中定义表单的基础类。你可以通过继承这个类来创建一个自定义的表单。每个字段都可以通过 forms 模块中的字段类来定义,例如 CharFieldEmailFieldTextField 等。

  • name = forms.CharField(max_length=100): 定义一个名为 name 的字符字段,最大长度为 100 个字符。
  • email = forms.EmailField(): 定义一个名为 email 的电子邮件字段,Django 会自动验证输入是否为有效的电子邮件格式。
  • message = forms.CharField(widget=forms.Textarea): 定义一个名为 message 的字符字段,并使用 Textarea 小部件来渲染为多行文本输入框。

2. 使用 forms.ModelForm

forms.ModelForm 类是 forms.Form 的一个子类,专门用于处理与 Django 模型相关的表单。通过继承 forms.ModelForm 类,你可以快速创建一个与模型字段对应的表单。

  • class Meta:: 在 Meta 类中,你可以指定与表单关联的模型以及需要包含的表单字段。
    • model = Contact: 指定表单关联的模型为 Contact
    • fields = ['name', 'email', 'message']: 指定表单中包含的字段为 nameemailmessage

3. 表单的使用

定义好表单后,你可以在视图函数或类视图中使用它。例如:

-- -------------------- ---- -------
---- ---------------- ------ ------
---- ------ ------ -----------

--- ----------------------
    -- -------------- -- -------
        ---- - -------------------------
        -- ----------------
            - ------
            ----
    -----
        ---- - -------------
    ------ --------------- --------------- -------- ------

在这个视图中,ContactForm 被实例化并传递给模板进行渲染。如果表单提交的数据有效,你可以进一步处理这些数据。

4. 表单的渲染

在模板中,你可以使用 Django 的模板语言来渲染表单:

  • {% csrf_token %}: 用于防止跨站请求伪造攻击。
  • {{ form.as_p }}: 将表单渲染为一系列 <p> 标签,每个字段都包含在一个 <p> 标签中。

通过这种方式,你可以轻松地在 Django 中定义和使用表单。

纠错
反馈