python - Django 多个成功 url

标签 python django django-views django-1.8

如何使用 kwargs 或其他方式设置多个成功 url?

我想要根据点击的按钮不同的成功 URL。

  • 保存 = 转到详细信息 View

  • 保存并继续 = 留在此 UpgradeView

  • save&createNew = 转到 CreateView

稍后它应该像在 Django 管理中一样工作

我有这个UpdateView:

class TopicEditView(UpdateView):
    fields = ['title','description',]
    model = Topic

    def post(self, request, *args, **kwargs):
        data = request.POST.copy()
        if data.get('save', False):
            pass
        elif data.get('save_and_continue', False):
            pass
        ...
        return UpdateView.post(self, request, *args, **kwargs)

    def get_success_url(self):
        return reverse('topic_detail', kwargs={'pk':self.object.pk})

这个简单的模板:

<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Speichern" name="save"/>
    <input type="submit" value="Speichern & weiter" 
        name="save_and_continue"/>
</form>

最佳答案

get_success_url 方法中,检查 self.request.POST 中提交按钮的值,并返回相应的 url:

def get_success_url(self):
    if self.request.POST.get('save'):
        return reverse('success_url_for_save')
    elif self.request.POST.get('save_and_continue'):
        return reverse('success_url_for_save_and_continue', kwargs={'pk':self.object.pk})
    else:
        return reverse('fallback_success_url')

不必检查 post 方法中的值。

关于python - Django 多个成功 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140203/

相关文章:

php - 我必须将数组从 php 文件传递​​到 python 文件,但我的代码给出输出 NULL

python - 在 mysql 查询中使用 if

python - Azure 免费网站与 Python Django 未运行

django - 类型错误 : connect() got an unexpected keyword argument 'signal' - Django signals

django - HTMX 传递所选列表中的按钮值

python - 如何在 python 中解码 JPG/PNG?

python - 从文件恢复注册表

python - django 的分页在 django View 中是如何工作的

python - django url 中两个或两个以上可选参数

python - 在 Django 中搜索多个字段