如何在视图生成之前获取表单路径Django

时间:2016-02-29 04:59:50

标签: python django django-forms

我有这样的问题: 我有表格,显示在网站的每个页面上。因此,该操作适用于指定(单独)视图:

def subscribe(request):
    if request.method == "POST":
        form = SubscriptionForm(data=request.POST)
        if form.is_valid():
            form.save()
            return redirect() # there is a problem
    else:
        raise Http404

成功处理表单后,我想将用户重定向到发送表单的页面。 但是,如果我使用request.path - 它会返回一个处理此表单的URL。但是我需要一个页面的网址......

你知道吗?我该怎么办?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要在表单中添加其他字段,以便让您的视图知道重定向到的位置。最简单的方法是在表单中添加隐藏的输入:

<form action="/some/url/" method="post">
    ...
    <input type="hidden" name="next" value="{{ request.path }}">
</form>

request.path的值是用户提交表单之前页面的路径。

在您的视图中,您可以使用参数next将用户重定向回他们来自的页面。

def subscribe(request):
    ...
    next = request.POST.get('next', '/some/default/url/here/')
    return redirect(next)