在Django中传递重定向变量

Dav*_*542 12 django django-views

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

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

def getting_started_info(request, location=''):
    location = location
    ...
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*rns 12

请记住,redirect()没有直接调用您的视图,它实际上是向客户端的浏览器发送302 Found状态(301 Moved Permanently如果您使用permanent=True),并带有重定向到其他URL的指令.在这种情况下,该URL是解析为getting_started_info视图的URL .

我相信为了这个工作,必须存在一个映射到getting_started_view并使用其location位置参数的urlconf .这很可能通过命名组发生.

从Django的1.8文档redirect():

争论可能是:

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


Dav*_*542 10

return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))
Run Code Online (Sandbox Code Playgroud)

  • 这个答案实际上是一行代码.你需要做更多的工作来解释它为什么起作用,因为这是一个人们想要学习的社区,而不仅仅是让事情有效. (10认同)