django admin静态URL:适用于base.css但不适用于dashboard.css

时间:2012-06-27 04:41:44

标签: django django-admin django-staticfiles

在settings.py中:

STATIC_ROOT = os.path.join(PROJECT_PATH, '..', 'media/static')
STATIC_URL = '/media/static/

在渲染页面中:

<title>Site administration | Django site admin</title>
<link rel="stylesheet" type="text/css" href="/media/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="css/dashboard.css" />

base.css的href是正确的,但dashboard.css的href缺少media/static/admin。为什么呢?

3 个答案:

答案 0 :(得分:0)

我猜你的模板看起来像这样?

<title>Site administration | Django site admin</title>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/dashboard.css" />

如果您尝试在浏览器中打开它们应该具有的位置,是否可以访问这两个文件? /media/static/admin/css/base.css/media/static/css/dashboard.css(或者可能是../ admin /...)

您是否已将'django.core.context_processors.static',添加到TEMPLATE_CONTEXT_PROCESSORS

<强>更新

当我尝试相同时,它对我来说很好。在我的模板中:

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />, 
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />

呈现的HTML(在我当前的项目/static/中是我的STATIC_URL):

<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />, 
<link rel="stylesheet" type="text/css" href="/static/admin/css/dashboard.css" />

答案 1 :(得分:0)

当我忘记设置STATIC_URL的上下文时,我之前遇到过render_to_response的问题。如果没有看到您在视图和模板中使用的代码,则很难确定实际问题,但如果它正在设置上下文并且您正在使用render_to_response,请尝试以下操作:

return render_to_response("login.html", context_instance=RequestContext(request))

许多其他渲染功能也是如此。你可以发布视图和模板吗?

答案 2 :(得分:0)

尽管Django对你大喊大叫不推荐使用ADMIN_MEDIA_PREFIX,但是将它放在你的settings.py中似乎可以在某些时候解决这个错误。我没有时间采取潜水,但无论在何处设置dashboard.css来自的'extra_styles'上下文,似乎仍然会看到AMP设置。