【问题标题】:How can I make a trailing slash optional for included module urls如何使包含的模块网址的尾部斜杠可选
【发布时间】:2017-09-11 23:33:18
【问题描述】:

我有一个第三方 django 应用程序,它有自己的 url,但它们需要一个斜杠。如何同时支持有斜线和没有斜线?

【问题讨论】:

    标签: django url package trailing-slash


    【解决方案1】:
    import re
    
    from django.conf.urls import url, include
    
    def optional_trailing_slash(urls):
       for url in urls[0].urlpatterns:
           url.regex = re.compile(url.regex.pattern.replace('/$', '/?$'))
       return urls
    
    urlpatterns = [
       url(r'^', optional_trailing_slash(include('third_party_app.urls'))),
    ]
    

    【讨论】:

    • 您可能希望避免这种情况,因为它会使文档在两个 URI 下都可用,如果您有任何客户端代码,这将受到搜索引擎的惩罚,并可能在您的应用程序中引入细微的错误.你检查过 django 的 APPEND_SLASH 设置了吗?它会自动附加一个尾随 / 并发送重定向,因此两个 URI 都可以工作,但一个被正确地视为另一个的别名。
    • 绝对有效的考虑,感谢您的评论。我正在从事的项目是一个内部 API,因此 SEO 不会成为问题。前端团队要求提供这种支持,以便在 APPEND_SLASH 重定向功能上不会丢失 POST 数据。
    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多