Django:从MEDIA_URL迁移到STATIC_URL

时间:2012-08-18 16:20:44

标签: django

自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

我能错过什么?

1 个答案:

答案 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}),
    ) 

这应该有效:)