我不知道是否有可能,但是我想使用中间件在URL的末尾添加一些参数。完成请求的URL后可以不重定向吗?在Django中间件中修改地址
即。 用户点击:.../some_link 和中间件其重写为:??/ some_link PAR1 = 1个& PAR2 = 2
另一种方法是修改作出反应并更换所有的HTML链接,但它不是我我喜欢做。
感谢
我不知道是否有可能,但是我想使用中间件在URL的末尾添加一些参数。完成请求的URL后可以不重定向吗?在Django中间件中修改地址
即。 用户点击:.../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)
什么是你想实现的目标以及为什么这样?
你可以在中间件中做任何你喜欢的事情。您可以访问请求对象,如果需要,您可以获取URL并重定向到新的URL。
我的问题是,你为什么要这样做?如果您需要保留有关请求的信息,那么适当的位置在会话中。
谢谢,终于这对我来说很清楚。 – yezooz 2009-09-22 20:30:59