Django 模板无法加载 CSS 文件
我正在搭建一个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_media
或 assets
。
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}),