创建 Django 表单
好的,下面是一个简单的 Django 表单的创建过程,以一个简单的联系人信息表单为例。
- 创建表单的 Python 文件
在 Django 应用的目录下,创建一个新的 Python 文件,命名为 forms.py。在该文件中,我们可以定义表单的字段和验证规则。下面是一个简单的表单示例:
from django import forms class ContactForm(forms.Form): name = forms.CharField(label='Your Name', max_length=100, required=True) email = forms.EmailField(label='Your Email', max_length=100, required=True) message = forms.CharField(label='Your Message', widget=forms.Textarea)
这个表单包含了三个字段:姓名、电子邮件和消息。每个字段都有一个标签(label)和一个最大长度限制(max_length)。姓名和电子邮件是必填字段(required=True),而消息是一个带有多行文本的文本区域(widget=forms.Textarea)。
- 创建表单视图的 Python 文件
在 Django 应用的 views.py 文件中,我们需要创建一个新的视图函数,用于处理表单的提交和显示。该视图需要处理 GET 和 POST 请求,以便在未提交表单时显示该表单,而在提交表单时验证数据并返回成功或失败的消息。下面是一个简单的视图示例:
from django.shortcuts import render, redirect 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'] # 保存数据到数据库 # TODO: 发送电子邮件 return redirect('contact_success') else: form = ContactForm() return render(request, 'contact.html', {'form': form}) def contact_success(request): return render(request, 'contact_success.html')
在这个视图中,我们首先检查请求的方法是 GET 还是 POST。如果是 POST,我们使用提交的数据创建一个新的表单实例,并检查它是否有效。如果表单有效,则从表单的清理数据(cleaned_data)中提取每个字段的值,并使用它们来保存数据到数据库或执行其他操作。最后,我们重定向到另一个视图,该视图显示成功消息。
如果请求的方法是 GET,我们创建一个新的、未验证的表单实例,并将其传递给模板进行渲染。在错误处理方面,Django 会处理所有的错误消息和验证错误,我们无需手动处理。
- 创建表单模板文件
在 Django 应用的 templates 目录下,我们需要创建一个名为 contact.html 的模板文件,用于渲染表单。这个模板需要使用 Django 的表单标签和模板标签来呈现表单。下面是一个简单的模板示例:
{% extends 'base.html' %} {% block content %} <h2>Contact Us</h2> <form method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Send message"> </form> {% endblock %}
在这个模板中,我们首先扩展了一个名为 base.html 的父模板,该模板包含了公共的头部和尾部。然后,我们在 content 块中使用了一个标题和一个 HTML 表单。在表单中,我们使用了 {% csrf_token %} 模板标签来添加一个隐藏的 CSRF 令牌字段,以防止 CSRF 攻击。我们还使用了表单实例的 as_p() 方法来呈现表单字段。
- 创建成功消息的模板文件
最后,我们需要创建一个成功消息的模板,用于在表单提交成功后显示。在 Django 应用的 templates 目录下,我们创建一个名为 contact_success.html 的模板文件,其中包含了一个简单的消息。
{% extends 'base.html' %} {% block content %} <h2>Message Sent</h2> <p>Thank you for contacting us!</p> {% endblock %}
在这个模板中,我们只显示了一个简单的标题和消息。这可以根据实际需求进行调整。
到此为止,我们已经完成了 Django 表单的创建过程。随着表单中字段的增加和验证规则的添加,表单可能会变得更加复杂和细致。但是,基本的步骤和技术在这里已经被演示和讲解了。
相关文章