在Django中传递重定向变量

时间:2011-05-22 03:12:49

标签: django django-views

我正在尝试使用重定向函数传递变量,但它没有返回任何变量。

def one:
    # define location variable here
    return redirect(getting_started_info, location=location)

def getting_started_info(request, location=''):
    location = location
    ...

有人可以告诉我为什么重定向中的变量没有通过吗?

3 个答案:

答案 0 :(得分:12)

请注意redirect()没有直接调用您的观点,它实际上是向客户端的浏览器发送302 Found状态(301 Moved Permanently如果您使用permanent=True)重定向到其他URL的说明。在这种情况下,该网址是解析为getting_started_info视图的网址。

我相信为了实现这一点,必须存在一个映射到getting_started_view且使用其location位置参数的urlconf。这很可能通过named groups发生。

来自redirect()上的django 1.8文档entry

  

争论可能是:

     
      
  • 模型:将调用模型的get_absolute_url()函数。
  •   
  • 视图名称,可能带参数:urlresolvers.reverse将用于反向解析名称。
  •   
  • 绝对或相对网址,将用作重定向位置的原样。
  •   

答案 1 :(得分:10)

return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))

答案 2 :(得分:2)

您也可以使用会话或cookie传递某个变量的值。