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

Django 有没有办法在匹配URL之前更改request.path?,django,django-middleware,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匹配之后完成的。有没有办法在这一点之前更改

当我收到一个包含单词“self”的路径请求时,我想在将其与URL匹配之前用用户id替换它。我尝试使用如下中间件:

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

替换工作正常,但显然是在URL匹配之后完成的。有没有办法在这一点之前更改路径?

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

也许另一个例子可以说明您正在尝试做什么


(由于我无法发表评论,所以将此作为答案)

显然,URL移动不是使用
request.path
而是
request.path\u info
完成的。同样的中间件也可以修改这个变量。

我不想修改应用程序,我必须在每个视图中都进行修改。类似这样的内容似乎是一个更好的选择。但如果您使用id替换
self
,则无论如何都必须编辑视图