在Django中间件修改地址
-
12-09-2019 - |
题
我不知道这是否是可能的,但我想在使用中间件的URL的末尾添加几个参数。能不能做到人无modyfing请求的URL重定向后?
即。 用户点击:... / some_link 和中间件其重写为:?... / some_link PAR1 = 1&PAR2 = 2
其他的方法是修改作出反应并更换所有的HTML链接,但它不是我想要做的。
由于
解决方案
我觉得这真的取决于你的问题,正是你正在尝试做的。
您不能没有重定向用户更改URL,因为你不能修改一个页面上的URL没有重装。基本上是一个重定向是告诉用户移动上的响应,没有办法真正改变的URL。需要注意的是,即使你在类似的JavaScript做它,你基本上做的是一样的重定向,所以它不能做客户端或服务器端。
我想,如果你为什么你需要传递通过URL这个信息给我们讲解一下它可能的帮助。为什么数据未存储在会话?
我想你可以将数据添加到请求对象,但不把它添加到URL。
其他提示
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
什么是你想实现的目标以及为什么这样?
您可以做任何你在中间件喜欢。您可以访问请求对象,你可以得到的网址,如果你想重定向到一个新的。
我的问题是,你为什么要这么做?如果您需要保留有关请求的信息,正确的地点做,这是在会话。
不隶属于 StackOverflow