2013-05-05 205 views
1

我想要跟着這些instructions在我的Django項目中啓用靜態文件。 我有我的settings.py文件中的Django中沒有加載靜態文件

STATIC_URL = '/static/' 

。我已將'django.contrib.staticfiles',添加到INSTALLED_APPS = (...)部分 我創建了一個文件夾mysite/static/mysite並將文件放到那裏。但是在運行服務器後,我無法訪問我的文件http://127.0.0.1:8000/static/mysite/style.css。 我做錯了什麼?

+0

什麼是'STATIC_ROOT'? – 2013-05-05 23:17:57

+0

'STATIC_ROOT =''' – user1460819 2013-05-05 23:27:29

+0

你可以把代碼STATICFILES_DIRS – 2013-05-06 00:43:59

回答

1

settings.py包括此:

import os 
settings_dir = os.path.dirname(__file__) 
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir)) 

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static/mysite/'), 
) 

而在你urls.py包括這些行結尾:

from django.conf.urls.static import static 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
urlpatterns += staticfiles_urlpatterns() 

希望它能幫助。

+0

不幸的是,它沒有幫助... – user1460819 2013-05-06 10:54:45

+0

現在,當我嘗試訪問任何靜態文件時,它給了我錯誤500 ... – user1460819 2013-05-06 11:09:35

+0

500錯誤是一個內部服務器錯誤。這是一個例外。你能發佈異常消息嗎? – 2013-05-06 12:35:22

0

我可以建議幾件事情要檢查:

  • 在我的項目至少,靜態文件夾是在應用程序目錄,而不是項目目錄。例如,mysite/myapp/static/myapp/img.jpg而不是mysite/static/mysite/img.jpg。您的項目可能不在正確的位置。

  • 在鏈接文件之前,請確保{%load staticfiles%}在您的html模板中。

  • 當您在HTML模板鏈接文件,而不是直接的URL就像

<link rel="stylesheet" href="myapp/css/custom.css">

使用

<link rel="stylesheet" href="{% static 'myapp/css/custom.css' %}">

這是足以讓工作的靜態文件在我的項目中,無需修改urls.py或手動設置PROJECT_ROOT或STATICFILES_DIRS。

+0

我不使用類似''link rel =「stylesheet」href =「{%static'myapp/css/custom.css'%}」>''的結構,我只是試圖直接訪問靜態文件.../static /style.css,這會失敗... – user1460819 2013-05-06 11:11:59

+0

正如您所鏈接的文檔所說,模板標記是可取的。它看起來像兩個都應該工作,所以問題很可能是文件不是項目可以訪問它們的地方。如果您將靜態文件夾放在應用程序目錄中,如上所述,它應該自動找到它們。但是,如果您將它們放在主項目目錄中,則必須將其添加到settings.py中的STATICFILES_DIRS中。請在鏈接的文檔中查看第4點以下的內容,並說明如何執行此操作。 – 2013-05-06 18:19:59