在Django grappelli中,如何将我自己的css文件添加到所有管理页面?或者有没有办法扩展管理员的base.html
模板?
答案 0 :(得分:1)
class MyModelAdmin(admin.ModelAdmin):
class Media:
js = ('js/admin/my_own_admin.js',)
css = {
'all': ('css/admin/my_own_admin.css',)
}
答案 1 :(得分:1)
我刚才偶然发现了同样的问题,但我无法记住我找到这个解决方案的位置。
如果您不希望在项目中包含其他依赖项,则可以使用一点hack:显然,您无法覆盖Fizz
模板并告诉它扩展{{ 1}},因为那会引用自己。
但是,您可以添加另一个指向grappelli模块位置的模板目录(而不是admin/base.html
位置)。设置看起来像这样:
admin/base.html
通过这种方式,您可以创建templates
模板,该模板将扩展import os
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'DIRS': [
'your/normal/templates/path',
os.path.dirname(grappelli.__file__)
]
},
]
- 后者是管理界面的grappelli基础模板。
答案 2 :(得分:0)
我找到了复杂的解决方案。首先,我找到了python package,它可以帮助您告诉Django Template Loader,与其他模板相比,您的模板具有最高优先级。
pip install django-templateloaderwithpriorities
在你的django设置文件中输入下一个代码:
TEMPLATE_LOADERS =('templateloaderwithpriorities.Loader',)+ TEMPLATE_LOADERS TEMPLATE_LOADER_PRIORITIES = ['project / admin / templates']
project/static/css/admin/extra_admin.css
放你的css。在project/admin/templates/admin/base_site.html
(不在base.html
中)中输入下一个代码:
{% extends 'admin/base.html' %}
{% load staticfiles %}
{% block javascripts %}
{{ block.super }}
<script>alert('OK')</script>
{% endblock %}
{% block stylesheets %}
<link rel="stylesheet" href="{% static 'css/admin/extra_admin.css' %}">
{{ block.super }}
{% endblock %}
Django Grappelli也能正常运作。
答案 3 :(得分:0)
可以通过在主app文件夹中创建一个admin目录来扩展admin'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 %}
在这里,我使用新脚本覆盖了我的javascript。