【问题标题】:Converting urls into lowercase?将网址转换为小写?
【发布时间】:2009-10-03 00:21:15
【问题描述】:

在与run_wsgi_app(webapp.WSGIApplication(urlpatterns)) 中的 urlpatterns 匹配之前,是否有任何直接将所有传入 url 转换为小写的方法?

【问题讨论】:

    标签: python google-app-engine web-applications


    【解决方案1】:

    您必须使用您自己的 WSGI 应用程序来包装 WSGIApplication 的实例,该应用程序将 WSGI 环境中的 URL 小写——但随后环境将保持修改状态,这可能会产生其他不愉快的影响。为什么不直接将(?i) 添加到您在urlpatterns 中使用的正则表达式模式中?

    【讨论】:

    • 谢谢。但是这将如何在 '/(?P\w+)/edit/(?P\w+)/?'哪里“编辑”可能是“编辑”?
    • @gmsd,正如我所说,只需将(?i) 添加到模式中即可;例如,使用'(?i)/(?P<some_category>\w+)/edit/(?P<item_id>\w+)/?'(就像你的模式加上前面的(?i),告诉re匹配不区分大小写。见docs.python.org/library/re.html?#regular-expression-syntax
    【解决方案2】:

    我想知道你是否可以在执行 WSGIApplication 实例之前修改你的 CGI 环境变量。

    os.putenv(os.getenv('PATH_INFO').lower())
    

    类似的东西。我自己对 URL 进行了轻微的修改,但是我 301 重定向到了新的 URL;我没有继续处理 WSGI。

    【讨论】:

    • 这个解决方案可以工作(有 Alex 提到的警告),但是 WSGI 中间件是一个更好的主意。
    猜你喜欢
    • 2020-10-19
    • 2022-01-18
    • 2013-11-29
    • 1970-01-01
    • 2023-01-04
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多