📅  最后修改于: 2023-12-03 15:14:43.825000             🧑  作者: Mango
在 Django 中,表单是一种构建 HTML 表单的方式。表单可以用来收集用户输入的数据,并将其发送到服务器以进行处理。就像在 HTML 中一样,表单可以包含文本字段、单选按钮、复选框等。
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 的表单和模板功能,您可以创建非常简洁而精美的表单页面。