创建 Django 表单

2023-04-11 00:00:00 django 创建 表单

好的,下面是一个简单的 Django 表单的创建过程,以一个简单的联系人信息表单为例。

  1. 创建表单的 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)。

  1. 创建表单视图的 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 会处理所有的错误消息和验证错误,我们无需手动处理。

  1. 创建表单模板文件

在 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() 方法来呈现表单字段。

  1. 创建成功消息的模板文件

最后,我们需要创建一个成功消息的模板,用于在表单提交成功后显示。在 Django 应用的 templates 目录下,我们创建一个名为 contact_success.html 的模板文件,其中包含了一个简单的消息。

{% extends 'base.html' %}

{% block content %}
  <h2>Message Sent</h2>
  <p>Thank you for contacting us!</p>
{% endblock %}

在这个模板中,我们只显示了一个简单的标题和消息。这可以根据实际需求进行调整。

到此为止,我们已经完成了 Django 表单的创建过程。随着表单中字段的增加和验证规则的添加,表单可能会变得更加复杂和细致。但是,基本的步骤和技术在这里已经被演示和讲解了。

相关文章