【问题标题】:Make all Django URLs case insensitive?使所有 Django URL 不区分大小写?
【发布时间】:2017-03-17 16:35:45
【问题描述】:

我正在使用一个相当大的 Django 设置,其中包含 70 多个应用程序。最近的一项请求是使其与不区分大小写的 URL 一起使用。有没有办法让其中的每个应用程序都使用不区分大小写的 URL,而不必更改每个应用程序的 urls.py?

让单个应用不区分大小写是一个相当简单的过程(例如:Case insensitive urls for Django?),但考虑到应用的数量,是否有更好的方法(例如:中间件)?

【问题讨论】:

    标签: python django


    【解决方案1】:
    1. 中间件?好吧,您可以将process_request 中的请求本身重定向或更改为lower(url) 或更复杂的东西。不过我会避免这样做,因为使用“70 多个应用程序”会产生大量额外负载。

    2. 您可以配置您的网络服务器(nginx?apache?)。我相信这是一条不错的路。

    3. 你可以grep and sed你的消息来源。如果您的 IDE 不提供此类功能。那是我绝对喜欢的。

    4. 您可以将urlpatterns 包装到一个方法中,该方法将在每个正则表达式(url 模式)前面应用(?i)

    5. 当然,您总是可以对某些东西进行猴子补丁。但这是一个非常非常丑陋的解决方案。不过,如果您感到绝望,请LocaleRegexProvider.regex urlresolvers

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2011-10-14
      • 1970-01-01
      • 2013-05-22
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      相关资源
      最近更新 更多