2011-02-18 46 views
4

這應該是非常簡單的,但不知何故,它讓我堅持了整整一個早上。我在本地開發,使用Django的調試服務器,以及與此filestructure:Django本地開發時的靜態文件 - 絕對如何服務?

/project/ (django project) 
/static/ (static files) 

在settings.py MEDIA_ROOT和MEDIA_URL都設置爲「/靜態/」,我在我的網址使用此的.py

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

在我的模板,需要從靜態目錄服務器上的文件配置爲這樣:

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

這所有的作品,因爲它應該 - 的JavaScript/CSS /圖像所有從服務頁面正確地服務。但是,當我轉到子目錄時,例如http://127.0.0.1:8000/news/,那麼所有鏈接都會中斷。

我試過使用各種os.import選項來讓它做適當的相對鏈接,但沒有任何運氣。有沒有一種方法可以強制它相對於基礎url,或者可能將其硬編碼到我的文件系統?

任何幫助將是驚人的!

+0

你在settings.py中設置了哪些媒體目錄? – neolaser 2011-02-18 00:28:24

+0

我們可以看到你的* full * urls.py嗎? – SingleNegationElimination 2011-02-18 02:09:03

回答

0

當你進入子目錄時,你的鏈接如何中斷?請你再解釋一下。

django 1.3是否支持靜態媒體的某種奇怪的相對路由?

如果它可以從主頁提供但不是其他人,那聽起來不像你的STATIC_URL是一個相對的位置?

什麼是您的STATIC_URL?它應該是絕對的,並以斜線開始。

1

在你的urls.py文件的這一行中,'../static'應該改爲絕對目錄。嘗試改變它,看看會發生什麼。

您的文件:

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

應該看起來更像:

url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/full/path/to/static'}),

給你舉個例子,我的設置有點不同,但我還是用一個完整的路徑。

這裏是我是如何設置: 在settings.py

STATIC_DOC_ROOT = '/Users/kylewpppd/Projects/Django/kl2011/assets/' 

urls.py

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

我從'localhost:8000/assets/'服務我的靜態文件。

1

我剛剛遇到同樣的問題,我通過從STATIC_URL ='/ static /'中刪除了第一個斜槓,並使其STATIC_URL ='static /'與philipbe上面寫的一樣。 奇怪的是,'/ media /'同時適用於MEDIA_URL(而'media /'中斷佈局)。

無論如何 - 只要將STATIC_URL改爲等於'static /'而不帶前導斜槓,就可以解決它。

相關問題