【问题标题】:Django Regex Adding /? to Urls.py Breaks Static LinkDjango正则表达式添加/?到 Urls.py 断开静态链接
【发布时间】:2013-12-26 04:55:54
【问题描述】:

尝试构建我的正则表达式以促进最可能的条目:

    urlpatterns = patterns('',
    url(r'^(?i)(a|b|c)-kit$', path),
    url(r'^(?i)a-kit/(a|b|c)$', path),
    ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

“/?”最后打破了我的静态文件位置。模板选择正确,但静态文件路径被破坏,因为它将当前页面目录添加为根。这是settings.py的相关部分

  STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')

  STATIC_URL = 'MySite/static/'

我的问题是如何以及为什么会发生这种情况,任何链接或修复建议将不胜感激。

【问题讨论】:

    标签: python regex django


    【解决方案1】:

    然后结束斜线由 django 自动处理。来自documentation for APPEND_SLASH

    APPEND_SLASH

    默认:True

    当设置为True 时,如果请求 URL 不匹配任何 URLconf 中的模式,它不以斜杠结尾,一个 HTTP 将重定向发送到附加了斜杠的相同 URL。注意 重定向可能会导致在 POST 请求中提交的任何数据 丢了。

    APPEND_SLASH 设置仅在 CommonMiddleware 为 已安装。

    【讨论】:

    • 这解决了我的斜杠问题,但不幸的是,同样的问题以另一种形式出现。我相信这与我的静态设置有关。我添加了一些代码,请看一下。
    • 你在运行DEBUG = True吗?
    • 是的,当然,问题是模板加载,但我所有的静态链接都得到 404,因为它将前一个目录添加到路径中。无需调试。有什么想法吗?
    • 它在我添加到 url.py 的第二个链接上中断。我所有的静态资源最终都变成了a-kit/mysite/static/css/normalize.css
    • 如果你有DEBUG = True(并且使用runserver)那么你不需要添加静态文件处理程序;从您的urls.py 中删除它。
    【解决方案2】:

    我按照here的回答成功解决了我的问题

    【讨论】:

      猜你喜欢
      • 2014-06-14
      • 2013-07-12
      • 2012-07-22
      • 2012-12-01
      • 2010-10-03
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多