目前的结构:
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.js
和app_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
等类似问题,但都非常不清楚。
非常感谢任何帮助!
P.S。我所知道的一切都来自官方Django 1.8教程/文档,所以请不要发布已弃用的答案。仅限1.8。
答案 0 :(得分:1)
尝试将os.path.join(BASE_DIR, '/MySite/static/')
更改为os.path.join(BASE_DIR, 'MySite/static')
,i。即删除转发/
。我想原因是os.path.join
的工作原理
>>> os.path.join('/foo', '/bar')
'/bar'
>>> os.path.join('/foo', 'bar')
'/foo/bar'