我有几个自定义样式表覆盖默认管理样式。他们住在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”的目录。但是我如何绕过这个?
答案 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/',
}