当我收到包含单词“self”的路径的请求时,我希望在将其与URL匹配之前将其替换为用户ID。我尝试使用这样的中间件:
def process_request(self, request):
if '/self/' in request.path:
request.path = request.path.replace('/self/','/' + str(request.user.id) + '/')
替换有效,但显然是在URL匹配后完成的。在此之前有没有办法改变路径?
答案 0 :(得分:9)
显然,使用request.path
但request.path_info
未完成网址跟踪。改变这个变量的同一个中间件可以工作。
答案 1 :(得分:1)
为什么要更改网址,然后匹配新的网址?为什么不将url直接指向您想要的视图和方法,然后处理request.user.id,就像更改网址一样?
也许另一个例子可以说明你想要做什么。
(因为我无法发表评论,所以给出答案)