📜  Django 表单 - Python (1)

📅  最后修改于: 2023-12-03 15:14:44.524000             🧑  作者: Mango

Django 表单 - Python

Django 是一个高级 Python Web 框架。它在服务器端的快速开发以及强大的模型-视图-控制器 (MVC) 设计模式的支持使其成为最受欢迎的 Web 框架之一。 在 Django 中,表单是一个让用户提交数据的重要组件。这篇文章将介绍 Django 中的表单。

Django 表单的作用

Django 表单的主要目的是让用户提交数据到服务器。 几乎每个 Web 应用程序都有一些表单,例如用户注册、搜索和联系我们等。

Django 表单可以处理用户提交的数据,验证它们是否有效,并转换为 Python 对象,以便在视图中使用。 Django 表单也可以生成 HTML 表单元素以呈现给用户。

创建一个 Django 表单

Django 表单由 Python 类表示。在创建 Django 表单时,您需要考虑以下几个方面:

  • 表单需要哪些字段?
  • 这些字段怎样验证用户提交的数据?
  • 如何将验证通过的数据转换为 Python 对象?
  • 如何在 Django 视图中处理提交的表单数据?

以下是一个简单的 Django 表单类示例:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=50)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

该表单有 nameemailmessage,分别对应用户在表单中填写的名字、邮箱地址和留言信息。 默认情况下,这些字段都是必填字段。 您可以使用 required 参数控制字段是否应该是必填字段。例如:

name = forms.CharField(max_length=50, required=False)

上述代码表示 name 字段不是必填字段。

渲染 Django 表单

要在 Django 视图中呈现表单元素,请创建一个表单实例并将其传递给您的模板。在模板中,您可以使用表单实例的 as_pas_tableas_ul 方法来呈现表单。

from django.shortcuts import render
from .forms import ContactForm

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # 处理表单数据
            pass
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

模板中使用 as_p 方法渲染表单:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">提交</button>
</form>

您还可以定制表单元素的 HTML 标记。 例如,下面的代码将在表单中为每个字段添加一个 <li> 元素:

<form method="post">
    {% csrf_token %}
    {% for field in form %}
        <li>
            {{ field.label_tag }} {{ field }}
            {% if field.errors %}
                <ul class="errorlist">
                {% for error in field.errors %}
                    <li>{{ error }}</li>
                {% endfor %}
                </ul>
            {% endif %}
        </li>
    {% endfor %}
    <button type="submit">提交</button>
</form>
Django 表单的验证

Django 表单可以验证提交的数据是否有效。 您可以在字段上使用各种验证器来验证表单数据。 例如,以下代码检查邮件地址是否有效:

email = forms.EmailField(error_messages={'invalid': '请输入有效的电子邮件地址'})

在视图中,您可以调用表单实例的 is_valid 方法来验证表单数据是否有效:

if form.is_valid():
    # 处理表单数据

is_valid 方法返回 True,如果表单数据有效,则反之。 如果表单数据无效,则 form.errors 属性包含错误信息。

结论

在 Django 中,表单是一项重要的工作。 通过使用 Django 表单,您可以轻松地验证用户提交的数据,将其转换为 Python 对象,并在视图中处理。 了解这些基础知识后,您可能会更好地理解 Django 框架的工作原理和实现。