2011-04-07 57 views
9

我使用Django 1.3,應用程序中的靜態文件很混亂。 我在做什麼: 1)設置Django 1.3靜態文件放在應用程序目錄

STATIC_ROOT = as path to directory 'static' in my project 
STATIC_URL = '/static/' 

2)即成我urls.py

if settings.DEBUG: 
    urlpatterns += patterns(
     '', 
     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 

3)將CSS和JS文件到我的應用程序目錄的文件夾 '靜態' 。 所以我得到了這樣的目錄樹:

my_project/ 
    main_app/ 
     static/ 
      css/ 
       style.css 
      js/ 
    secondary_app/ 
     static/ 
      foldername/ 
       file.css 

4)我在settings.py文件中添加這兩種應用到INSTALLED_APPS。 現在在我的模板時,我寫如下一行:

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css" /> 

Django的successfuly發現我的CSS文件中的目錄

my_project/main_app/static/css/ 

和插頭在style.css中 但是,當我寫

<link rel="stylesheet" href="{{ STATIC_URL }}foldername/file.css" type="text/css" /> 

Django不插入此文件。

所以我的問題:我做錯了什麼?爲什麼我不能從secondary_app目錄插入我的css文件? 我必須告訴你更多關於這種情況的信息嗎?

+0

你所謂的「靜態」兩個目錄。 STATIC_ROOT指向哪一個? – 2011-04-07 12:26:20

+0

在官方網站的文檔中,我讀到了能夠將靜態文件放入應用程序的「static /」子目錄中的開發人員。我錯了嗎? [鏈接](http://docs.djangoproject.com/en/dev/howto/static-files/#managing-static-files) – tony 2011-04-07 12:42:16

+0

順便說一句,如果我重新命名secondary_app /靜態/ foldername /,其中包含我的CSS文件,到secondary_app/static/css/Django成功插入css文件。我不知道爲什麼...有人可以解釋這一點嗎? – tony 2011-04-08 08:06:25

回答

11

背後的想法是,您將自己的所有應用程序發佈到app/static下的自己的靜態文件中。

一旦你在項目中部署應用程序,運行python manage.py collectstatic將複製所有靜態文件中找到感謝STATICFILES_FINDERS設定(其中包含的取景器尋找在默認情況下,每個已安裝的應用程序一個static DIR)您STATIC_ROOT目錄,然後將送達之內通過STATIC_URL

開發服務器處理,當在DEBUG模式,但是這是一個有趣的閱讀STATIC_URL模式:Serving static files in production

+1

你的意思是每次我們添加一個靜態文件到開發環境中時,我們必須運行一個collectstatic? – 2011-06-20 10:20:58

+1

@Glide:不。如果你有靜態的發生,但不想要它:刪除Apache別名,並添加'staticfiles_urlpatterns'到你的網址並打開調試。 https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/#static-file-development-view(在底部)。 – 2011-09-15 01:36:17

相關問題