自Django 1.3以来,引入了STATIC_URL的概念,将css和js文件中的使用媒体文件分开。
我设置了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)
但是在开发中,我在运行runserver时仍然得到404。
[18/Aug/2012 17:12:04] "GET /static/jquery/jquery-1.8.0.min.js HTTP/1.1" 404 1682
我能错过什么?
答案 0 :(得分: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}),
)
这应该有效:)