Django(1.3)admin中的自定义样式表

时间:2011-06-21 15:06:05

标签: css django django-admin

我有几个自定义样式表覆盖默认管理样式。他们住在myproject/static/admin/css-extended。我正在用'myproject / templates / admin'中的模板覆盖几个Django的默认管理模板。

在模板中,我的样式表引用是:{{ STATIC_URL }}/admin/css-extended/[stylesheet].css

但是,我无法通过自定义样式表。

我在settings.py中有以下与网址相关的设置:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

我列出了以下模板上下文处理器:

'django.core.context_processors.media',
'django.core.context_processors.static',

有人可以帮忙吗?

由于

更新

我怀疑这个问题与我的ADMIN_MEDIA_PREFIX与css-extended网址('/static/admin')的第一部分相同这一事实有关。我想Django试图在核心管理员而不是项目本身中找到一个名为“css-extended”的目录。但是我如何绕过这个?

2 个答案:

答案 0 :(得分:1)

您是否在本地开发环境中遇到此问题(使用runserver)?如果是这样,你的urls.py中有以下内容吗?

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()

阅读Django Docs了解更多信息。

答案 1 :(得分:1)

好的,我现在想我知道这里发生了什么。希望这将澄清:

STATIC_ROOT 仅由“collectstatic”管理命令使用,以确定转储其收集的静态文件的位置。

dev服务器使用

STATIC_URL 来定义将为其提供静态文件的URL。

您尚未设置的

STATICFILES_DIRS 由开发服务器和“collectstatic”管理命令使用,以标识要提供的静态文件的位置。对于开发服务器,文件直接在适当的位置提供。对于管理命令,将收集文件并将其复制到STATIC_ROOT。

[注意:这里有一个约定 - 如果您的应用程序(而不是您的项目)中有/ static子目录,它们将与STATICFILES_DIRS中明确定义的任何内容一起被选中。]

您只需将以下内容添加到settings.py:

即可
STATICFILES_DIRS = {
        '/absolute/path/to/myproject/static/',
}