2010-07-06 48 views
0

在我的應用程序中,我想使用一個css文件,但tempalte不知道文件的位置,雖然我已將它配置爲在教程中:django css文件無法識別 - 配置錯誤?

in the urls.py(the urls文件在站點的根目錄,在設置不屬於一個應用程序)

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': settings.STATIC_DOC_ROOT}), 

模板

<link href="/site_media/default.css" rel="stylesheet" type="text/css" /> 

STATIC_DOC_ROOT = '/site_media' 

我可以在哪裏出錯? 謝謝

回答

3

檢查django-annoying,這是一個非常有用的應用程序,有很多方便的裝飾器,中間件和功能。如果您添加StaticServe這樣的中間件,Django將在沒有在urls.py中明確設置的情況下爲DEBUG = True提供靜態。

MIDDLEWARE_CLASSES = (
    'annoying.middlewares.StaticServe', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware',    
    'django.middleware.doc.XViewMiddleware',    
    'django.contrib.auth.middleware.AuthenticationMiddleware',      
) 

其次,檢查你的MEDIA_URL(在你的情況下,它STATIC_DOC_ROOT,但你應該使用MEDIA_URL)和MEDIA_ROOT路徑。 MEDIA_ROOT應指向您的靜態目錄的絕對路徑。這就是我如何做到這一點的setttings.py:

import os 


def rel(*x): 
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) 

# MEDIA_ROOT will point to media directory where settings.py is located 
MEDIA_ROOT = rel('media') 
MEDIA_URL = '/media/' 

您可以使用相同的功能,路徑設置爲您templates目錄。

+0

我用過這個方法,非常感謝!它沒有必要安裝煩人的中間件,現在它很好,沒有:D 再次感謝! – dana 2010-07-06 15:20:59

+0

肯定沒有必要,但我真的很喜歡django討厭的應用程序,並認爲你可能會覺得它有用:) – 2010-07-06 15:23:35

+0

我會審查它的情況下麻煩;)謝謝!:) – dana 2010-07-06 15:42:39

2

document_root參數static.serve需要位於服務器文件系統上的文件,而不是URL。所以除非你的css文件真的在你的磁盤上的/site_media目錄中,這看起來不太可能,你還需要其他的東西,如STATIC_DOC_ROOT

+0

雖然我讀過它3次,我真的不明白你的意思。 我應該將STATIC_DOC_ROOT路徑更改爲我的磁盤上的絕對路徑或? – dana 2010-07-06 15:03:29

+1

是的,這正是我的意思。 – 2010-07-06 15:07:49

+0

我現在試一試,併發布結果:)非常感謝!:) – dana 2010-07-06 15:09:45

相關問題