Django中相同形式的两个不同提交按钮

Posted

技术标签:

【中文标题】Django中相同形式的两个不同提交按钮【英文标题】:Two different submit buttons in same form in Django 【发布时间】:2014-12-03 02:06:40 【问题描述】:

我在 Django 中有一个 UpdateView。

我只有一个普通的提交按钮。当对象正确更新时,它会通过success_url 重定向到对象列表。

我可以制作两个不同的提交按钮:一个提交并重定向到对象列表页面 (ListView) 的按钮和另一个提交并重定向到对象详细信息页面 (DetailView) 的按钮?

我不知道如何巧妙地做到这一点。

【问题讨论】:

【参考方案1】:

由于您提交到同一个地方,并且只想在保存后更改重定向目标,这很简单。提交按钮就像任何其他输入控件一样,它们具有名称和值,并且您在 POST 数据中接收这些。因此,在您的模板中,您可以拥有:

<input type="submit" name="list" value="Submit and go to list">
<input type="submit" name="detail" value="Submit and go to detail">

在你看来:

if form.is_valid():
    form.save()
    if 'list' in request.POST:
        return redirect('list_url')
    else:
        return redirect('detail_url')

【讨论】:

以上是关于Django中相同形式的两个不同提交按钮的主要内容,如果未能解决你的问题,请参考以下文章

Django为表单中的两个提交按钮呈现不同的模板

带有两个提交按钮的 Django 表单。 . .一个需要字段,一个不需要

如何在 Django 中访问表单提交按钮的值?

Django request.POST 不包含提交表单的按钮的名称

如何根据 django 模板中的不同提交按钮在更新视图中自定义成功 url?

Django:从其他表单传递参数以提交按钮