📅  最后修改于: 2023-12-03 15:30:30.685000             🧑  作者: Mango
在 Django 中,表单是你与用户交互的主要方式之一。表单让你能够向用户请求数据,验证用户输入,并在需要时作出反应。
Django 表单是根据一个简单的 Python 类创建的。这个类定义了表单中的字段、验证规则和其他相关内容。一个最基本的表单如下:
from django import forms
class ContactForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
以上代码定义了一个包含 name
、email
和 message
三个字段的表单。字段的类型可以根据需要进行更改,详细信息可以查看 Django 表单文档。
一旦一个表单类被定义,就可以在视图函数中使用它来处理表单请求了。以下是一个典型的表单处理函数的示例:
from django.shortcuts import render
from .forms import ContactForm
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# 处理表单数据
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# 发送电子邮件
send_mail(
subject=f"New message from {name}",
message=message,
from_email=email,
recipient_list=['admin@example.com']
)
# 显示成功信息
return render(request, 'success.html')
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
以上代码展示了如何在视图函数中使用表单类进行请求处理。首先检查 HTTP 请求的方法是否为 POST
,如果是,则初始化表单对象并使用 is_valid()
方法对表单进行验证。如果表单数据有效,则处理数据并执行所需的操作(例如发送电子邮件),最后重定向到适当的页面。
最后,我们需要创建一个模板来渲染表单。以下是模板的基本结构:
{% extends 'base.html' %}
{% block content %}
<h2>Contact Us</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Send</button>
</form>
{% endblock %}
以上代码使用 {{ form.as_p }}
来渲染表单。这将在每个表单字段下方显示一个 <p>
标签,其中包含输入字段和其相关的标签和错误信息。您可以使用其他方法如 as_table()
或 as_ul()
来渲染不同类型的表单。
在 Django 中处理表单请求非常简单,只需要定义一个表单类、创建一个视图函数来使用它,并创建一个模板来渲染表单。使用 form.is_valid()
来验证表单输入,并处理表单数据以执行所需操作。通过学习 Django 表单处理,您可以轻松地捕获和验证用户输入,从而增强您的网站的交互性和响应能力。