2012-08-18 114 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