Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

django页面包含多个表单


单个视图函数处理多个表单

描述

在这种方法中,我们将创建一个单独的 Django 视图函数来处理包含多个表单的页面。这个视图函数将负责渲染表单、处理表单提交以及在模板中显示错误信息。

详细说明

我们可以在一个视图函数中创建多个表单实例,并根据请求的类型(GET 或 POST)执行相应的操作。在处理 POST 请求时,我们将逐个验证和处理每个表单,然后渲染回同一个页面,以便显示错误信息。

# views.py
from django.shortcuts import render
from .forms import Form1, Form2

def multi_form_view(request):
    if request.method == 'POST':
        form1 = Form1(request.POST)
        form2 = Form2(request.POST)

        if form1.is_valid() and form2.is_valid():
            # 处理表单数据
            # ...

    else:
        form1 = Form1()
        form2 = Form2()

    context = {
        'form1': form1,
        'form2': form2,
    }

    return render(request, 'template_name.html', context)
<!-- template_name.html -->
<form method="post">
  {% csrf_token %}
  {{ form1.as_p }}
  {{ form2.as_p }}
  <button type="submit">Submit</button>
</form>

总结

通过一个视图函数处理多个表单是一种简单的方法,但随着表单数量的增加,视图函数可能会变得冗长。此方法适用于少量表单且逻辑相对简单的情况。

使用Formsets处理多个表单

描述

Django 提供了一个称为"formsets"的工具,它允许我们在一个视图中同时处理多个表单。Formsets 可以在模板中很方便地渲染和处理。

详细说明

在这种方法中,我们首先需要创建表单类,然后使用 Django 的 Formset 来管理这些表单类。在视图函数中,我们可以使用 Formset 的工厂函数来初始化表单实例,并在处理请求时验证和处理这些表单。

# views.py
from django.forms import formset_factory
from django.shortcuts import render
from .forms import Form1, Form2

def multi_form_view(request):
    Form1Set = formset_factory(Form1, extra=2)
    Form2Set = formset_factory(Form2, extra=2)

    if request.method == 'POST':
        formset1 = Form1Set(request.POST, prefix='formset1')
        formset2 = Form2Set(request.POST, prefix='formset2')

        if formset1.is_valid() and formset2.is_valid():
            # 处理表单数据
            # ...

    else:
        formset1 = Form1Set(prefix='formset1')
        formset2 = Form2Set(prefix='formset2')

    context = {
        'formset1': formset1,
        'formset2': formset2,
    }

    return render(request, 'template_name.html', context)
<!-- template_name.html -->
<form method="post">
  {% csrf_token %}
  {{ formset1.management_form }}
  {{ formset2.management_form }}
  {{ formset1.as_table }}
  {{ formset2.as_table }}
  <button type="submit">Submit</button>
</form>

总结

使用 Formsets 可以更有效地处理多个表单,因为它提供了内置的表单集合管理功能。这种方法适用于处理多个表单实例且逻辑相对较复杂的情况。

##重定向(Redirect)方式跳转页面重定向是一种常见的页面跳转方式,它会将用户从当前页面导航到另一个页面。它可以带参数,并且在Djan ...
###方式一:基于DjangoForm类的验证创建表单类:创建一个继承自django.###方式二:基于DjangoModelForm的验证 ...
Django 表单组件允许你轻松地创建、验证和处理用户输入的数据,比如用户注册、登录、搜索等操作。数据处理:一旦用户提交了表单,表单组件将收 ...
Django的Form表单是一种用于处理和验证用户输入数据的工具,它允许您在Web应用程序中创建HTML表单并处理表单提交的数据。###最佳 ...
contains()方法这是最简单的方式之一,使用`String`类自带的`contains()`方法来检查一个字符串是否包含另一个字符串。 ...