使用不同的参数重定向到相同的视图

时间:2013-02-15 16:49:57

标签: python django redirect apache

我有这个设置:

urls.py

url(r"^(?P<id1>\d+)/(?P<id2>\d+)/$", "project.views.view", name="view"),

匹配views.py

def view(request, id1, id2):
    if request.method == "POST":
        """a lot of processing"""
        return HttpResponseRedirect(reverse('view', args=(id1, different_id2)))

不幸的是,当发生这种情况时,它实际上解决了:

return HttpResponseRedirect(reverse('view', args=(id1, id2)))

所以我得到了与帖子提交时相同的页面。

这是一个问题吗?调用重定向到相同的视图,但使用不同的参数。

(我删除了原始名称 - 这太令人困惑了)

2 个答案:

答案 0 :(得分:2)

不,那应该有效。您的代码中可能存在设置ID的错误,或者过早地返回HttpResponseRedirect。进入调试器,看看发生了什么。

答案 1 :(得分:0)

感谢帮助人员。你是对的。

问题是我有辅助功能(将视图分成小块)并忘记为帮助者添加返回:

def helper(request, id1, id2):
    """a lot of processing"""
    return HttpResponseRedirect(reverse('view', args=(id1, different_id2)))

def view(request, id1, id2):
    if request.method == "POST":
        helper(request, ...)
    """process get"""

应该是

def view(request, id1, id2):
    if request.method == "POST":
        return helper(request, ...)
    """process get"""