2012-07-19 160 views
0

我在django上做了一個小應用程序,它使用的是模板。每個tempalate使用靜態文件,如css,js和圖像。所有這些文件與模板位於同一目錄中。django和靜態css加js文件

template 
    main.html 
    support.html 
    about.html 
    ... 

    css 
     reset.css 
     style.css 
     ... 

    img 
    js 
     jquery.js 
     main.js 
     ... 

如果有配置django開發服務器來加載這些文件而不編輯html模板文件?

我收到

http://127.0.0.1:8000/face/css/960_24_col.css 404 NOT FOUND 127.0.0.1:8000 

這改變了settings.py沒有幫助我

STATIC_ROOT = 'C:/Projects/site/website/face/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = ('C:/Projects/site/website/face/static',) 

回答

0

您可能需要使用的contrib應用staticfiles。在文檔頁面的底部,您將看到如何在開發服務器上使用它。

0

STATIC_URL已被定義爲'/ static /',因此所有靜態文件都將從/靜態提供。

換句話說/face/css/960_24_col.css不正確。

這應該是/static/face/css/960_24_col.css,假設face目錄位於C:/ Projects/site/website/face/static/face。

也許我還建議你不要在你的設置文件中使用絕對路徑。要找出項目根目錄的絕對路徑,請使用以下內容:

PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) 
+0

很奇怪建議不要在settings.py文件中使用絕對路徑。因爲根據settings.py中的默認註釋,可以預先使用絕對文件路徑。 – simar 2012-07-20 09:44:13

+0

我的意思是最好不要使用靜態絕對路徑,而要使用動態絕對路徑。如果你部署到你的生產服務器上,那是在Linux上運行,而你在Windows上開發呢?當你使用靜態aboslute路徑(c:\ foo \ bar)時,這很明顯,不適用於Linux機器。 – 2012-07-20 10:10:25

0

以下是我如何通過Django dev服務器提供靜態文件。

定義在urls.py:

from os import getcwd, path as ospath 
... 
urlpatterns += patterns('', 
    (r'css/([a-zA-Z0-9_.]+.css)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'css')}), 
    (r'images/(.*)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'images')}), 
    (r'js/([a-zA-Z0-9_.]+.js)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'js')}) 
)