在Django模板中使用两个表单,以及在提交表单时调用不同的函数可以通过以下步骤实现:
forms.Form
类,并定义所需的字段和验证规则。render()
函数实现。然后,在视图函数中定义两个不同的处理逻辑函数,分别用于处理两个表单的提交动作。{% csrf_token %}
标签来添加跨站请求伪造保护。然后,可以使用{{ form.as_p }}
或{{ form.as_table }}
等模板标签将表单字段渲染到模板中。通过使用不同的表单对象,可以在同一页面上呈现两个不同的表单。request.method
的值来确定请求的类型。如果是POST请求,则可以使用request.POST
获取用户提交的数据。根据表单的不同,调用相应的处理逻辑函数进行处理。下面是一个示例代码:
# forms.py
from django import forms
class Form1(forms.Form):
field1 = forms.CharField()
class Form2(forms.Form):
field2 = forms.CharField()
# views.py
from django.shortcuts import render
def my_view(request):
form1 = Form1()
form2 = Form2()
if request.method == 'POST':
if 'form1' in request.POST:
form1 = Form1(request.POST)
if form1.is_valid():
handle_form1_data(form1.cleaned_data)
elif 'form2' in request.POST:
form2 = Form2(request.POST)
if form2.is_valid():
handle_form2_data(form2.cleaned_data)
return render(request, 'my_template.html', {'form1': form1, 'form2': form2})
# my_template.html
<form method="post">
{% csrf_token %}
{{ form1.as_p }}
<button type="submit" name="form1">Submit Form1</button>
</form>
<form method="post">
{% csrf_token %}
{{ form2.as_p }}
<button type="submit" name="form2">Submit Form2</button>
</form>
在上面的示例中,首先定义了两个表单类Form1
和Form2
,然后在视图函数my_view
中实例化了这两个表单对象。通过检查request.method
的值来确定用户是提交了哪个表单,并分别调用相应的处理逻辑函数handle_form1_data
和handle_form2_data
进行处理。
在模板my_template.html
中,使用了{{ form1.as_p }}
和{{ form2.as_p }}
模板标签将表单字段渲染到模板中。当用户点击相应的提交按钮时,会发送POST请求,根据name
属性的不同,可以区分是哪个表单被提交。
领取专属 10元无门槛券
手把手带您无忧上云