有没有办法在匹配url之前更改request.path?

时间:2012-02-16 23:26:35

标签: django django-middleware

当我收到包含单词“self”的路径的请求时,我希望在将其与URL匹配之前将其替换为用户ID。我尝试使用这样的中间件:

def process_request(self, request):
    if '/self/' in request.path:
        request.path = request.path.replace('/self/','/' + str(request.user.id) + '/')

替换有效,但显然是在URL匹配后完成的。在此之前有没有办法改变路径?

2 个答案:

答案 0 :(得分:9)

显然,使用request.pathrequest.path_info未完成网址跟踪。改变这个变量的同一个中间件可以工作。

答案 1 :(得分:1)

为什么要更改网址,然后匹配新的网址?为什么不将url直接指向您想要的视图和方法,然后处理request.user.id,就像更改网址一样?

也许另一个例子可以说明你想要做什么。

(因为我无法发表评论,所以给出答案)