Django 表单简介

2023-04-11 00:00:00 django 表单 简介

Django 表单是一个用于接收、验证和处理用户输入的工具。通过 Django 表单,我们可以将用户输入的数据传递给视图函数,并在处理过程中对其进行验证和处理。

Django 表单的基本结构包括字段和验证器。字段是用户输入数据的具体内容,比如文本、日期等等;验证器则用来验证这些字段的内容是否符合预期。

下面是一个简单的 Django 表单的例子:

from django import forms

class MyForm(forms.Form):
    name = forms.CharField(label='Your name')
    email = forms.EmailField(label='Your email')

这个表单有两个字段,一个是名字,一个是邮箱。我们可以在视图函数中使用这个表单来接收用户输入的数据。下面是一个处理这个表单的视图函数的例子:

from django.shortcuts import render
from .forms import MyForm

def my_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            # 处理表单数据
            return render(request, 'success.html')
    else:
        form = MyForm()
    return render(request, 'myform.html', {'form': form})

在这个视图函数中,我们首先判断请求的方法是否为 POST,如果是 POST 请求,我们就通过 request.POST 创建一个 MyForm 的实例,然后使用 is_valid() 方法来验证表单是否有效。如果表单验证通过,我们就可以从 cleaned_data 属性中获取到用户输入的数据,并进行处理。最后,我们将处理结果渲染到模板中。

如果表单验证不通过(比如用户输入的数据不符合要求),form.is_valid() 方法将返回 False。在这种情况下,我们可以使用 form.errors 属性来获取验证错误信息,并将这些错误信息渲染到模板中,让用户修正错误并重新提交表单。

下面是一个使用 Django 表单的模板的例子:

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

在这个模板中,我们首先使用 {% csrf_token %} 标签来生成 CSRF 令牌,以防止跨站请求伪造攻击。然后,我们使用 {{ form.as_p }} 标签来将表单渲染成 HTML。这个标签会自动为每个字段生成一个 <p> 标签,并将标签中的 label 和 input 组合起来。

以上就是 Django 表单的简单介绍。需要注意的是,Django 表单还有其他的一些特性,比如文件上传、表单布局等等,需要更详细地了解的读者可以参考 Django 官方文档。

相关文章