【问题标题】:Passing a variable in redirect in Django在Django的重定向中传递一个变量
【发布时间】:2011-08-30 11:00:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django django-views


    【解决方案1】:

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

    我相信,要使其工作,必须存在一个映射到getting_started_view 并使用其location 位置参数的urlconf。这很可能通过named groups 发生。

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

    参数可能是:

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

    【讨论】:

      【解决方案2】:
      return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))
      

      【讨论】:

      • 是否需要修改我的 urls.py 因为参数?
      • 这个答案实际上是一行代码。您需要做更多的工作来解释它为什么有效,因为这是一个希望学习的社区,而不仅仅是让事情发挥作用。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        相关资源
        最近更新 更多