Django 模板无法加载 CSS 文件

20 投票
5 回答
22159 浏览
提问于 2025-04-15 12:38

我正在搭建一个django应用,但我的模板无法找到CSS文件... 我的settings.py文件看起来是这样的:

MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')
MEDIA_URL = '/media/'

我的CSS文件放在/mysite/media/css/目录下,模板代码包含:

<link rel="stylesheet" type="text/css" href="/media/css/site_base.css" />`

然后,在url.py文件中我有:

# DEVELOPMENT ONLY
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/media'}),

但是开发服务器只显示了普通的HTML(没有样式)。我哪里做错了?

--

好的,我根据你们说的内容解决了问题。答案是:

settings.py:

MEDIA_ROOT = 'd://web//mysite//media//'  #absolute path to media
MEDIA_URL = '/mymedia/' #because admin already using /media

site_base.html:

<link rel="stylesheet" type="text/css" href="/mymedia/css/site_base.css" />

urls.py:

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

就这样!它成功了。

5 个回答

2

在开发服务器上,我喜欢“作弊”,把下面的内容放到我的urls.py文件里。

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

这样一来,项目中所有在“/includes”文件夹里的东西都可以通过开发服务器访问。你也可以把这个改成“/media”。

5

ADMIN_MEDIA_PREFIX 默认设置为 \media\,这可能会导致路径出现问题。你可以修改这个设置,或者为非管理员的媒体文件使用其他名称,比如 site_mediaassets

13

在你的urls.py文件中的“仅限开发”部分,你需要把

(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/media'}),

改成...

(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.MEDIA_ROOT}),

撰写回答