已经有几个类似的问题已经问过,但是在花了很长时间后我找不到问题的答案.
在下面的代码中,当我使用参数"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是一种无状态协议:每个请求都存在于自己的协议上,就像用户从未访问过该站点的任何其他页面一样.创建会话的概念是为了向诸如站点之类的内聚单元提供"状态"感.通过会话,数据以某种形式的持久存储和"密钥"存储,以查找将数据提供给客户端(通常是用户的浏览器).在下一页加载时,客户端将密钥发送回服务器,服务器使用它来查找数据以显示状态.
因此,如果您需要来自另一个视图的数据,则需要将其添加到会话中,执行重定向,并从下一个视图中查找会话中的数据.
| 归档时间: |
|
| 查看次数: |
26243 次 |
| 最近记录: |