在 Django 中,表单(Form)组件用于处理用户提交的数据。Django Form 提供了一种简便的方式来定义和验证表单字段,并可以轻松地在模板中渲染成 HTML 表单。以下是 Django Form 组件的基本概念和用法:

创建表单类

首先,在你的应用程序中的 forms.py 文件中创建一个表单类,该类继承自 forms.Form:
# forms.py
from django import forms

class MyForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    age = forms.IntegerField()
    is_subscribed = forms.BooleanField(required=False)

在这个例子中,我们定义了一个名为 MyForm 的表单类,包含了四个字段:name(字符串类型)、email(电子邮件类型)、age(整数类型)和 is_subscribed(布尔类型)。

在视图中使用表单

在视图函数中,你可以使用这个表单类来处理用户提交的数据:
# views.py
from django.shortcuts import render
from .forms import MyForm

def my_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # 处理表单数据
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            age = form.cleaned_data['age']
            is_subscribed = form.cleaned_data['is_subscribed']
            # 进一步处理...
    else:
        form = MyForm()

    return render(request, 'my_template.html', {'form': form})

在这个例子中,如果用户提交了表单数据,我们将使用 MyForm(request.POST) 实例化表单对象,并使用 form.is_valid() 来验证表单数据是否有效。如果有效,可以使用 form.cleaned_data 获取清理过的数据。

在模板中渲染表单

在模板中,可以使用表单对象的方法来渲染 HTML 表单:
<!-- my_template.html -->
<form method="post" action="{% url 'my_view' %}">
  {% csrf_token %}
  {{ form.as_p }}
  <input type="submit" value="Submit">
</form>

在这个例子中,{{ form.as_p }} 将表单渲染成 HTML 表单的段落形式。

表单验证和错误处理

Django Form 提供了丰富的验证器和错误处理机制。在表单类中,你可以添加字段级别的验证器、表单级别的验证器,以及使用内置的验证器。错误信息可以通过 form.errors 和 form.non_field_errors 获取,并在模板中渲染。

这只是 Django Form 的入门介绍。Django Form 提供了很多高级特性,包括自定义小部件、自定义字段、ModelForm 等。深入了解 Django Form 可以让你更好地构建和处理 Web 表单。


转载请注明出处:http://www.zyzy.cn/article/detail/13920/Django