你如何链接到站点范围内的静态文件在Django 1.8?(How do you link to si

2019-10-23 07:05发布

目前的结构:

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或类似的东西,但都非常清楚。

任何帮助将不胜感激!

PS我知道的一切是从官方的Django 1.8教程/文档,所以请不要发布过时的答案。 1.8只。

Answer 1:

尝试改变os.path.join(BASE_DIR, '/MySite/static/')os.path.join(BASE_DIR, 'MySite/static')即删除转发/ 。 我想原因是如何os.path.join作品

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


文章来源: How do you link to site-wide static files in django 1.8?