带参数的django redirect()

mco*_*mco 7 python django

已经有几个类似的问题已经问过,但是在花了很长时间后我找不到问题的答案.

在下面的代码中,当我使用参数"username"从"myView"重定向到"anotherView"时,它可以正常工作.但我需要在此重定向中包含"range"参数,因为重定向后使用的模板需要此"范围".每当我尝试做,我会得到几个错误,如:

- "不要把*args和**kwargs混合在一起来反转()"

有没有办法以我想要的方式管理它?

   def myView(request):
      if request.user.is_authenticated():
        if request.method == 'POST':
                #my code comes here
                ....
                return redirect('anotherView', username=request.user.username, {"range": range(int(layout))})



   def anotherView(request,username):
      if request.user.is_authenticated():
        #my code comes here
          ....
          return redirect(something)
Run Code Online (Sandbox Code Playgroud)

Chr*_*att 20

redirect仅仅是一个包装器,HttpResponseRedirect它会自动调用reverse您创建重定向到的URL.因此,传递给它的参数不是任意的,它们必须与您传递的参数相同reverse,特别是只有创建URL所需的参数.

许多人似乎很难理解数据不能随意传递给视图.HTTP是一种无状态协议:每个请求都存在于自己的协议上,就像用户从未访问过该站点的任何其他页面一样.创建会话的概念是为了向诸如站点之类的内聚单元提供"状态"感.通过会话,数据以某种形式的持久存储和"密钥"存储,以查找将数据提供给客户端(通常是用户的浏览器).在下一页加载时,客户端将密钥发送回服务器,服务器使用它来查找数据以显示状态.

因此,如果您需要来自另一个视图的数据,则需要将其添加到会话中,执行重定向,并从下一个视图中查找会话中的数据.