2012-08-18 100 views
0

由於Django 1.3已經引入了STATIC_URL的概念,以便從css和js文件中分離使用媒體文件。Django:從MEDIA_URL遷移到STATIC_URL

我已經設置了我的STATIC_ROOT = '/home/user/project/static/'STATIC_URL = '/static/'

在我base.html文件,我已經改變了路徑是這樣的:

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

而在url.py我加入以下兩行:

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

我的觀點呈現與RequestContext的模板:

return render(request, 'main_page.html', variables) 

但是在開發過程中我仍然在運行runse時得到404 rver。

[18/Aug/2012 17:12:04] "GET /static/jquery/jquery-1.8.0.min.js HTTP/1.1" 404 1682 

我能錯過什麼?

回答

1

settings.py

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__)) 

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'site_media') 
MEDIA_URL = '/site_media/' 
STATIC_URL = '/static/' 

if DEBUG: 
    STATIC_ROOT = os.path.join(PROJECT_DIR, 'static') 
else: 
    STATICFILES_DIRS = (
     os.path.join(PROJECT_DIR, 'static'), 
    ) 

urls.py

if settings.DEBUG: 
    urlpatterns += patterns('', 
     url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 
     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 

這應該工作:)

+0

感謝Efrin。關鍵是我必須將'STATICFILES_DIRS'設置爲物理靜態文件,而將靜態文件的實際路徑留空,因爲稍後將由manage.py收集。注意:) :) – Houman 2012-08-18 16:39:39

+0

不客氣:) – Efrin 2012-08-18 17:14:03

+0

你能指出'static'目錄應該放在哪裏嗎?是否應該像'/ / /'或somwhere else? – andi 2014-05-03 20:07:53