【问题标题】:How do you link to site-wide static files in django 1.8?你如何链接到 django 1.8 中的站点范围的静态文件?
【发布时间】:2015-06-05 22:47:39
【问题描述】:

当前结构:

MySite
  |--MySite
  |    |--static
  |         |--MySite
  |              |-- site_wide.css
  |--MyApp
       |--static
            |--MyApp
                 |-- app_specific.js
                 |-- app_specific.css

settings.py:

STATIC_URL = "/static/"

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "/MySite/static/"),
)

使用以下代码,我可以成功链接到 app_specific.jsapp_specific.css,但无法链接到 site_wide.css

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'MyApp/app_specific.css %}" />
<link rel="stylesheet" type="text/css" href="{% static 'MySite/site_wide.css' %}" />

... site body ...

<script type="text/javascript" src="{% static 'MyApp/app_specific.js' %}" ></script>

检查生成的 html 后,第二个链接的 href 为:

href="/static/MySite/site_wide.css"

不存在的。

我目前的理解是,django 会在STATIC_URL 定义的路径中搜索我的链接文件,然后(如果未找到)通过SATICFILES_DIRS 中列出的路径进行,但它显然从未查看指定的路径在STATICFILES_DIRS

我是 django 的新手,想了解它是如何工作的。其他一些类似的问题提到了collectstaticfiles 或类似的东西,但都非常不清楚。

任何帮助将不胜感激!

附:我所知道的一切都来自官方 Django 1.8 教程/文档,所以请不要发布已弃用的答案。仅限 1.8。

【问题讨论】:

    标签: css django static


    【解决方案1】:

    尝试将os.path.join(BASE_DIR, '/MySite/static/') 更改为os.path.join(BASE_DIR, 'MySite/static'),即。 e.删除转发/。我猜原因是os.path.join 的工作原理

    >>> os.path.join('/foo', '/bar')
    '/bar'
    >>> os.path.join('/foo', 'bar')
    '/foo/bar'
    

    【讨论】:

      猜你喜欢
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多