【问题标题】:Muliple submit button on single form in DjangoDjango中单个表单上的多个提交按钮
【发布时间】:2019-03-19 14:04:32
【问题描述】:

在一个表单中,我有两个提交按钮。根据用户单击的按钮,我希望 form.is_valid() 上的重定向是页面 A 或页面 B。你知道我如何能够为每个提交按钮附加不同的值并将这个值传递给POST 请求,以便我可以在我的视图中对其进行评估?

模板.html

<div class="submitbutton"">
                <button type="submit">
                   Submit A
                </button>
            </div>

  <div class="submitbutton"">
                <button type="submit">
                   Submit B
                </button>
            </div>

views.py

 if request.method == 'POST':

    <!-- a bunch of code that works -->


   if user_clicked_SubmitA:     
         return redirect('profile')

   if user_clicked_SubmitB:
         return redirect('home')

谢谢!

【问题讨论】:

  • 能否分享一下代码。你是怎么做到的。
  • post_data = request.POST if '_submit1' in post_data: return HttpResponseRedirect("") elif '_submit2' in post_data: return HttpResponseRedirect("") elif '_submit3' in post_data: return HttpResponseRedirect(" ") else: return HttpResponseRedirect("")
  • 你能把这个变成答案吗?
  • 请立即查看

标签: django django-forms django-views


【解决方案1】:

name 属性添加到您的按钮:

<button type="submit" name="btn1" value="btn1">Button 1</button>
<button type="submit" name="btn2" value="btn2">Button 2</button>

并在视图中检查它:

def my_view(request):
    if request.POST.get('btn1'):
        # first button clicked
    if request.POST.get('btn2'):
        # second

更新:为&lt;button&gt; 标签添加了value 属性。

【讨论】:

  • 这太棒了。我认为这会奏效。谢谢!我马上测试。
  • 不幸的是,这似乎不起作用。我认为可能将代码更改为 if request.POST.get('name') == btn1: 它可能有效,但没有运气
  • 按钮需要value 属性才能工作。
  • 谢谢丹尼尔!我认为动作也需要在表单标签中定义,对吗?
【解决方案2】:

您可以执行以下操作

def my_view(request):
    post_data = request.POST
    if '_submit1' in post_data:
        return HttpResponseRedirect("")
    elif '_submit2' in post_data:
        return HttpResponseRedirect("")
    elif '_submit3' in post_data:
        return HttpResponseRedirect("")
    else:
        return HttpResponseRedirect("")



<form action="<view_url>">
<input type="submit" name="_submit1" />
<input type="submit" name="_submit2" />
<input type="submit" name="_submit3" />
</form>

【讨论】:

  • 谢谢。我没有在操作中包含 view_url。一旦我解决了这个问题,我的解决方案就可以工作了。
猜你喜欢
  • 2015-10-04
  • 2017-05-03
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多