Python Django(grappelli):如何将我自己的css添加到所有页面,或者如何扩展admin';s base.html?
在Django grappelli中,如何将自己的css文件添加到所有管理页面?或者有没有办法扩展管理员的Python Django(grappelli):如何将我自己的css添加到所有页面,或者如何扩展admin';s base.html?,python,django,django-admin,django-grappelli,Python,Django,Django Admin,Django Grappelli,在Django grappelli中,如何将自己的css文件添加到所有管理页面?或者有没有办法扩展管理员的base.html模板? 如果您想更改管理员的外观,通常应该覆盖管理员模板。这里详细介绍了这一点:覆盖管理模板。有时,您可以扩展原始管理文件,然后覆盖一个块,例如django/contrib/admin/templates/admin/base.html中的{%block extrastyle%}{%endblock%} 如果您的样式是特定于模型的,则可以通过admin.py中的Media
base.html
模板?- 如果您想更改管理员的外观,通常应该覆盖管理员模板。这里详细介绍了这一点:覆盖管理模板。有时,您可以扩展原始管理文件,然后覆盖一个块,例如django/contrib/admin/templates/admin/base.html中的{%block extrastyle%}{%endblock%}
- 如果您的样式是特定于模型的,则可以通过admin.py中的Media meta类添加其他样式。请参见此处的示例:
类MyModelAdmin(admin.ModelAdmin):
班级媒体:
js=('js/admin/my_own_admin.js',)
css={
'all':('css/admin/my_own_admin.css',)
}
我找到了复杂的解决方案。首先,我发现了一个可以帮助您告诉Django模板加载器,与其他模板相比,您的模板具有最高优先级
pip安装django templateloaderwithpriorities
project/static/css/admin/extra_admin.css
中放置cssproject/admin/templates/admin/base\u site.html
(不在base.html
!)中输入下一个代码:
{%extends'admin/base.html%}
{%load staticfiles%}
{%block javascripts%}
{{block.super}}
警报(“正常”)
{%endblock%}
{%块样式表%}
{{block.super}}
{%endblock%}
Django Grappelli的一切都很好。我不久前偶然发现了同样的问题,但我不记得在哪里找到了这个解决方案 如果您不想在项目中包含其他依赖项,您可以使用一些技巧:显然,您不能只覆盖
admin/base.html
模板并告诉它扩展admin/base.html
,因为这会引用自身
但是,您可以添加另一个模板目录,该目录将指向grappelli模块位置(而不是模板
位置)。设置如下所示:
导入操作系统
模板=[
{
'BACKEND':'django.template.backends.django.DjangoTemplates',
“应用程序目录”:正确,
“DIRS”:[
'您的/normal/templates/path',
os.path.dirname(图形文件)
]
},
]
通过这种方式,您可以创建一个
admin/base.html
模板,该模板将扩展templates/admin/base.html
——后者是管理界面的Grapelli基本模板 管理员'base.html'模板可以通过在主应用程序文件夹中创建管理员目录进行扩展。在admin目录中创建一个名为base.html的新文件。将这些行复制到新文件中
{% extends 'admin/base.html' %}
{% load staticfiles %}
{% block javascripts %}
{{ block.super }}
<script type="text/javascript" src="{% static 'app/js/action.js' %}"></script>
{% endblock %}
{% block stylesheets %}
{{ block.super }}
{% endblock %}
{%extends'admin/base.html%}
{%load staticfiles%}
{%block javascripts%}
{{block.super}}
{%endblock%}
{%块样式表%}
{{block.super}}
{%endblock%}
在这里,我使用一个新脚本覆盖了我的javascript。查看此帖子:@AlonWeissfeld不完全是需要的,但是谢谢。我创建了一个模板项目/admin/templates/admin/base.html,并添加了下一个:
{%extends'admin/base.html%}{%block extrastyle%}{%endblock%}
但在我的操作之后,管理没有变化。这正是我所需要的。感谢您为特定于模型的附加css指明了方向。这是一个漂亮的解决方案,但“DIRS”参数仅在Django 1.8版本之后发布,它将与1.8版本之前的Django版本中的模板_DIRS一起使用:-我粘贴的整个模板设置只是为了给出设置应放置的位置的上下文。谢谢,下次我将尝试您的解决方案