2024-05-18 12:03:41 发布
网友
在Django-grappelli中,如何将我自己的css文件添加到所有管理页面?或者有没有办法扩展管理员的base.html模板?在
base.html
我前一阵子也碰到过同样的问题,但我不记得我是从哪里找到这个解决办法的。在
如果您不想在项目中包含额外的依赖项,可以使用一些小技巧:显然,您不能仅仅覆盖admin/base.html模板并告诉它扩展admin/base.html,因为这会引用它自身。在
admin/base.html
但是,您可以添加另一个模板目录,该目录将指向grappelli模块位置(而不是templates位置)。设置如下所示:
templates
import os TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'DIRS': [ 'your/normal/templates/path', os.path.dirname(grappelli.__file__) ] }, ]
这样您就可以创建一个admin/base.html模板,它将扩展templates/admin/base.html-后者是管理接口的grappelli基本模板。在
templates/admin/base.html
我找到了复杂的解决方案。首先,我找到了一个python package,它可以帮助您告诉Django模板加载器,与其他模板相比,您的模板具有最高的优先级。在
pip install django-templateloaderwithpriorities
在django设置文件中输入下一个代码:
模板加载器=('TEMPLATEloaderwithpriorities.Loader',)+模板加载器 TEMPLATE_LOADER_PRIORITIES=['project/admin/templates']
project/static/css/admin/extra_admin.css
在project/admin/templates/admin/base_site.html(不是在base.html!)输入下一个代码:
project/admin/templates/admin/base_site.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的一切都很好。在
class MyModelAdmin(admin.ModelAdmin): class Media: js = ('js/admin/my_own_admin.js',) css = { 'all': ('css/admin/my_own_admin.css',) }
我前一阵子也碰到过同样的问题,但我不记得我是从哪里找到这个解决办法的。在
如果您不想在项目中包含额外的依赖项,可以使用一些小技巧:显然,您不能仅仅覆盖
admin/base.html
模板并告诉它扩展admin/base.html
,因为这会引用它自身。在但是,您可以添加另一个模板目录,该目录将指向grappelli模块位置(而不是
templates
位置)。设置如下所示:这样您就可以创建一个
admin/base.html
模板,它将扩展templates/admin/base.html
-后者是管理接口的grappelli基本模板。在我找到了复杂的解决方案。首先,我找到了一个python package,它可以帮助您告诉Django模板加载器,与其他模板相比,您的模板具有最高的优先级。在
pip install django-templateloaderwithpriorities
在django设置文件中输入下一个代码:
模板加载器=('TEMPLATEloaderwithpriorities.Loader',)+模板加载器 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的一切都很好。在
class MyModelAdmin(admin.ModelAdmin): class Media: js = ('js/admin/my_own_admin.js',)
css = { 'all': ('css/admin/my_own_admin.css',) }
相关问题 更多 >
编程相关推荐