2014-01-25 78 views
0

我花了幾個小時就這個問題和到處看,但無法弄清楚,所以我懇求幫助從有經驗的一次。Django的1.6.1:靜態標籤不工作

這不是我第一次我創建一個Django應用程序,所以我引用了我以前做過,但沒有什麼幫助。我正在嘗試使用「靜態」模板標記來提供靜態文件,但它不起作用。

我敢肯定我設置都正確(以下教程和我以前的項目,我會在下面設置),但是當我在本地運行的服務器,它無法找到我的靜態文件。當我用{{STATIC_URL}}標籤替換靜態模板標籤時,它就可以工作。我甚至在瀏覽器中輸入了靜態文件的直接路徑,它們都可以工作。我得到了CSS和JS文件的輸出。這讓我瘋狂,靜態模板標籤不起作用。

這裏是我的設置:

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = 'staticfiles' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/w/static/' 

# URL prefix for admin static files -- CSS, JavaScript and images. 
# Make sure to use a trailing slash. 
# Examples: "http://foo.com/static/admin/", "/static/admin/". 
#ADMIN_MEDIA_PREFIX = '/admin/media/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, 'static/'), 
# 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. 

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

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles',) 

順便說一句,我檢查了靜態文件夾的路徑,這是正確的。我故意沒有包含應用程序的名稱,所以它就在那裏。我還包括{%static static from staticfiles%}標記。正如我所提到的,只有靜態標籤不起作用。請有人解釋我正在犯什麼愚蠢的錯誤。

感謝

回答

1

我使用Django 1.6.1

這裏是我的設置:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATIC_URL = '/static/' 
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) 
TEMPLATE_DIRS = (os.path.join(BASE_DIR, "templates"),) 

我的文件結構如下:

 
mysite 
    myapp 
    static 
    templates 
    manage.py 

編輯:

它的{%負載staticfiles%}不{%負載靜態從staticfiles%}

你並不需要使用STATIC_ROOT,除非你想有一個靜態的文件夾中的每個應用程序,我相信

我有這個question 例如.jpg!= .jpeg!因此,尋找那個錯誤以及

+0

我BASE_DIR是PROJECT_DIR = os.path.join(os.path.dirname(__ FILE__),os.pardir)和我檢查手工,這是正確的。我也試過{%load staticfiles%},並且我有同樣的問題。這是奇怪的問題,因爲我剛剛測試了我的其他應用程序,運行在1.5,一切正常。這只是錯誤的想法。 – rahanar

+0

BASE_DIR和PROJECT_DIR是任意的,它們僅用於定位您的靜態和模板和媒體目錄...所以我嘗試設置,看看是否有成功。正如你可以看到我的基本目錄是mysite,並且我所有的靜態內容都在靜態文件夾中。如果你不想嘗試,那麼我建議你確保你拼寫正確。嘗試基本的東西,即消除以找到最可能的原因。如果您需要更多幫助,請留言更多! – user3043594

+1

我不知道它是什麼魔法,但它工作。我的文件結構與您的文件結構相同,但使用您的方式查找BASE_DIR會產生差異。我不知道爲什麼,因爲我之前的工作方式。無論如何,謝謝。 – rahanar