【问题标题】:Is there a way to alter the request.path before matching the urls?有没有办法在匹配 url 之前更改 request.path?
【发布时间】:2012-02-16 23:26:35
【问题描述】:

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

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

替换有效,但显然是在 URL 匹配之后完成的。在此之前有什么方法可以改变路径吗?

【问题讨论】:

    标签: django django-middleware


    【解决方案1】:

    显然,URL 行进不是使用request.path 而是request.path_info 完成的。更改此变量的相同中间件起作用。

    【讨论】:

      【解决方案2】:

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

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

      (由于无法发表评论,因此将其作为答案)

      【讨论】:

      • 我不想修改应用程序,我必须在每个视图中都这样做。像这样的东西似乎是一个更好的选择。
      • 但如果您将 self 替换为 id,则无论如何您都必须编辑视图
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2018-11-29
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      相关资源
      最近更新 更多