0

从 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

我会错过什么?

4

1 回答 1

1

设置.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'),
    )

网址.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}),
    ) 

那应该工作:)

于 2012-08-18T16:30:21.923 回答