gpt4 book ai didi

Django - 检测页面中提交了哪个表单

转载 作者:行者123 更新时间:2023-12-02 03:32:03 24 4
gpt4 key购买 nike

我在同一个页面上有多个表单域和多个提交按钮。我想检测触发 POST 请求的表单字段。

我正在使用 CBV 并且我的 post() 方法是这样的:

def post(self, request, **kwargs):

....

form1 = Form1(request.POST, instance=Model1.objects.filter(some_filtering...)
form2 = Form2(request.POST, instance=Model2.objects.filter(some_filtering...)
form3 = Form3(request.POST, instance=Model3.objects.filter(some_filtering...)
form4 = Form4(request.POST, instance=Model4.objects.filter(some_filtering...)


# this is the code I want to know
if POST request is triggered by form1...

# do something....

return super().post(request, **kwargs)


return super().post(request, **kwargs)

如何检测哪个表单触发了 POST 请求?

最佳答案

我通过在 HTML 模板中使用 input 标签而不是 button 标签来提交表单来做到这一点

<form name="form-1" method="POST" action="{% url 'view_url_name'%}">
{% csrf_token %}
{{ form }}
<!--use input tag for submit button -->
<input class="btn mt-3 btn-primary" name="form-1-submit" value="Submit" type="submit"/>
</form>

Note: use the different name for each form submit input.

现在在您的 View 中,您可以简单地检查按钮的 name 属性。

if 'form-1-submit' in request.POST:
form1 = Form1(request.POST, instance=Model1.objects.filter(some_filtering...)
...
# and so on

This implementation will also cover the scenario where you are submitting the same form from different buttons to use that form data for different purposes.

关于Django - 检测页面中提交了哪个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51577148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com