Django 有没有办法在匹配URL之前更改request.path?
当我收到一个包含单词“self”的路径请求时,我想在将其与URL匹配之前用用户id替换它。我尝试使用如下中间件: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匹配之后完成的。有没有办法在这一点之前更改
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
,则无论如何都必须编辑视图