2015-06-05 37 views
1

目前的結構:如何鏈接到django 1.8中的站點範圍的靜態文件?

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或類似的東西,但都很不清楚。

任何幫助將不勝感激!

P.S.我所知道的一切都來自官方的Django 1.8 tutorial/docs,所以請不要發佈棄用的答案。只有1.8。

回答

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' 
+0

你是一個很好的人。 – thedarklord47