Django:通过响应重定向传递参数

时间:2014-05-23 23:54:31

标签: python django

urlpatterns = patterns('tourney.views',
    url(r'^(?P<tourney_slug>[-\w]+)/$', 'tourney', name="tourney"),
)

#views.py:
def tourney(request,
            tourney_slug,
            message = None,
            template_name="tourney/tourney.html"
            ):
    tourney = Tourney.objects.get(slug=tourney_slug)
    message = message
    print(message)


#/somewhereElse
message = "Please enter valid values for submission."
return HttpResponseRedirect(reverse('tourney:tourney', 
                                    args=(tourney_slug,)
                                   ),
                            message=message
                            )

名为somewhereElse的页面将用户重定向到tourney视图。此代码成功重定向到锦标赛视图,但由于某种原因,消息不会作为参数传递。我构建HttpResponseRedirect时出了什么问题?

1 个答案:

答案 0 :(得分:2)

重定向只是意味着您的浏览器将加载重定向中指定的网址而不是当前网页。它在Django中作为单独的请求处理,因此它不共享状态并且消息参数丢失。 HttpResponseRedirect开头也没有message参数,因此将其传递给响应并不会起作用。

您可能想要的是将消息存储在cookie或会话中,并在下一个请求中检索并显示它。一种方法是使用messages framework