2015-04-07 158 views
0

我知道這是一個愚蠢的問題,但我已經通過Django文檔讀了十幾遍,並閱讀了這裏的每個相關問題,但仍然無法弄清楚我做錯了什麼。Python Django靜態css文件

我想將我的模板CSS鏈接到靜態根目錄中的文件。有人能告訴我我做錯了什麼嗎?

settings.py:

STATIC_URL = '/static/' 
STATIC_ROOT = 'C:/Users/Chris/Dropbox/MyProject/MyProject/static/styles/' 

STATICFILES_DIRS = (
    "C:/Users/Chris/Dropbox/MyProject/MyProject/static/styles", 
    ) 
模板

{% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static '/styles/style.css' %}"> 

urls.py

from django.conf.urls.static import static 

urlpatterns = patterns('', 

# my url patterns here 

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

我的猜測是,無論是在urls.py靜態文件代碼不正確或settings.py中的STATICFILES_DIRS,但我已經基於stackoverflow上的其他問題嘗試了一百萬個組合似乎沒有任何工作。我剛剛得到一個404頁面未找到錯誤。

任何幫助表示讚賞。我在這上面花了很多時間。

回答

2

你有兩個主要問題:

  1. 您的STATIC_ROOT目錄包含在STATICFILES_DIRS中。一旦你準備好部署,STATIC_ROOT就是其中的collectstatic command will copy all static files。顯然,您不希望此路徑位於已有靜態文件的位置,因爲此路徑中的所有文件都將被覆蓋。

  2. 您的靜態url包含已包含在STATICFILES_DIRS中的路徑組件。您的/MyProject/static/styles位於STATICFILES_DIRS,這意味着static標記將在此目錄內查找請求的文件。現在您正在請求鏈接到'/styles/style.css',因此django正在查找此文件:/MyProject/static/styles/styles/style.css,該文件不存在。要解決此問題,請將靜態標記更改爲{% static 'style.css' %}

+0

的主要問題是「/風格/」目錄的複製。非常感謝。現在就開始工作了。 –

0

試試這個 在settings.py文件

STATIC_ROOT = os.path.join(SITE_ROOT, 'templates/static/') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (

         SITE_ROOT + '/templates', 

) 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 

) 

和urls.py文件

urlpatterns += patterns('', 
         (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
         {'document_root': os.path.join(settings.SITE_ROOT, 'templates/static')}), 

        ) 

希望這將幫助你

0

使用靜態路徑可能更直觀。

在settings.py在你的模板聲明

STATIC_PATH = os.path.join(BASE_DIR, 'static') 
# Add any additional locations of static files 

STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static". 
# Always use forward slashes, even on Windows. 
# Don't forget to use absolute paths, not relative paths. 
# os.path.join(ROOT_PATH, "public") 
    STATIC_PATH, 
) 

然後只需通過我的所有嘗試加載文件