📜  django 中的表单动作 - Python (1)

📅  最后修改于: 2023-12-03 15:14:43.825000             🧑  作者: Mango

Django 中的表单动作

在 Django 中,表单是一种构建 HTML 表单的方式。表单可以用来收集用户输入的数据,并将其发送到服务器以进行处理。就像在 HTML 中一样,表单可以包含文本字段、单选按钮、复选框等。

Django 提供了大量的表单功能,包括:

  • 表单验证:Django 提供了一些内置的表单验证器,以确保数据的完整性和正确性。例如,验证 email 格式、验证是否为必填字段等。
  • 模型表单:模型表单是一种快速创建表单的方式,它根据模型自动生成表单字段,从而减少了重复输入代码的工作量。
  • 自定义表单字段:Django 允许您自定义表单字段,以便满足特定的需求。例如,您可以创建一个电话号码字段,它要求用户输入一个特定格式的电话号码。
创建表单

在 Django 中,表单通常定义为一个类。以下是一个简单的表单类的示例:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

在这个例子中,我们定义了一个名为 ContactForm 的表单类。这个表单有三个字段:

  • name 字段是一个字符字段,最大长度为 100。
  • email 字段是一个 Email 字段,用于验证电子邮件地址的格式。
  • message 字段是一个文本字段,用于输入多行文本。

这个表单可以用来收集用户的联系信息。

渲染表单

在视图中生成表单实例后,可以将其传递给一个模板,在模板中使用 form 变量渲染表单。以下是渲染一个表单的基本示例:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">发送</button>
</form>

在这个示例中,我们使用 form.as_p 让 Django 生成一系列带有段落标记的表单字段。

验证表单

在用户提交表单后,Django 将验证表单,以确保输入的数据符合要求。如果表单中的某个字段未通过验证,则 Django 将返回一个包含错误信息的页面。

以下是在视图中验证表单的基本模式:

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import ContactForm

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # 处理表单数据
            return HttpResponseRedirect('/thankyou/')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

在这个示例中,我们首先检查请求的方法是否为 POST。如果是 POST 请求,则我们使用 ContactForm(request.POST) 创建一个表单实例,并使用 is_valid() 方法验证表单是否有效。

如果表单有效,则可以对表单中的数据进行处理,并使用 HttpResponseRedirect 将用户重定向到其他页面。

如果表单无效,则会在表单对象上添加一些错误信息,并将其返回给用户。

结论

Django 提供了强大而灵活的表单功能,使您能够轻松收集和验证用户输入。通过结合 Django 的表单和模板功能,您可以创建非常简洁而精美的表单页面。