这是我的urls.py
import os.path site_media = os.path.join( os.path.dirname(__file__), 'site_media' ) urlpatterns = patterns('', url(r'^site_media/(?P.*)$', 'django.views.static.serve', { 'document_root': site_media }), )
我的site_media文件夹和style.css文件在
myProjectFolder/myApp/static/site_media/css/style.css
在我的base.html模板中(我所有其他模板都从该base.html模板扩展而来),这就是我所拥有的:
{% block title %}{% endblock %} {% block header %}{% endblock %} {% block content %} {% endblock %}
在我的style.css中,我只有这样:
#header { display: inline; background-color: black; color: black; border: 1px solid green; }
并且CSS没有被应用到
#header
div。知道为什么吗?
问题来自2个方面。
传递了错误的document_root变量
不使用html中的模板标签
1.不建议在urls.py文件中定义site_media变量,因为它不符合DRY原理。应将其作为变量保存在settings.py文件中,以便在需要时可以导入其他模块。在您的settings.py文件中,添加以下行:
import os.path SITE_MEDIA_ROOT = os.path.join( os.path.dirname(__file__), 'myApp/', 'static/', 'site_media' #this should be the correct path instead )
替换为urls.py文件:
from myApp import settings urlpatterns = patterns('', url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.SITE_MEDIA_ROOT }), )
2.您应该使用django模板标签来获取css文件。在基本模板中,将以下行添加到head标签上方:
{% load static %}
然后替换:
<link rel='stylesheet' type='text/css' href='/site_media/css/style.css' />
与:
<link rel='stylesheet' type='text/css' href="{% static 'site_media/css/style.css' %}" />
之后它应该工作。