修改Django中间件中的地址

时间:2009-09-22 08:41:06

标签: python django django-urls django-middleware

我不知道是否可能,但我想在使用中间件的URL末尾添加一些参数。在为所请求的URL提供动画后,是否可以在没有重定向的情况下完成?

即。 用户点击:... / some_link 和中间件将其重写为:... / some_link?par1 = 1& par2 = 2

其他方式是修改响应并替换每个HTML链接,但这不是我想要做的事情。

由于

3 个答案:

答案 0 :(得分:4)

class YourRedirectMiddleware:

    def process_request(self, request):
        redirect_url = request.path+'?par1=1&par2=2'
        return HttpResponsePermanentRedirect(redirect_url)

你想要完成什么以及为什么这样做?

答案 1 :(得分:1)

我认为这实际上取决于你的问题以及你究竟想要做什么。

如果不重定向用户,则无法更改URL,因为无法在不重新加载的情况下修改页面上的URL。基本上,重定向是指示用户继续前进的响应,无法实际更改URL。请注意,即使您使用JavaScript之类的操作,您基本上也可以像重定向一样执行此操作,因此无法在客户端或服务器端执行此操作。

我认为如果您向我们解释为什么需要通过URL传递此信息,这可能会有所帮助。为什么不在会话中存储数据?

我想你可以将数据添加到请求对象,但不会将其添加到URL。

答案 2 :(得分:0)

您可以在中间件中执行任何您喜欢的操作。您可以访问请求对象,如果需要,可以获取URL并重定向到新的。

我的问题是,你为什么要这样做?如果您需要保留有关请求的信息,请在会话中找到合适的位置。