Django 管理员:每个应用程序都有不同的自定义 base_site.html
Django admin: every app with different custom base_site.html
您好,我一直在尝试自定义我的管理页面,我有一些特定于应用程序的管理页面需要自定义 javascript 和 css。我想在每个应用程序的 template/admin/ 中有不同的 base_site.html,包括所需的 javascript 和 css。问题是只显示第一个注册应用程序(在 settings.py 文件内)的 base_site.html 的更改。
- 我为每个应用程序自定义 base_site.html 的方法是否正确?如果是,我怎样才能让它工作?
- 如何只在某些管理页面包含css和js?
谢谢。
-app1
-templates
-admin
-base_site.html
-app2
-templates
-admin
-base_site.html
-app3
-templates
-admin
-base_site.html
-manage.py
如果您只想向您的管理员添加一些自定义 javascript 和 css,您最好使用 ModelAdmin 资产定义。有关更多信息,请参阅 django docs。像这样:
class ArticleAdmin(admin.ModelAdmin):
class Media:
css = {
"all": ("my_styles.css",)
}
js = ("my_code.js",)
至于base_site.html,您将无法为每个应用程序覆盖它,它是通用模板而不是特定于应用程序的模板。但无论如何,您可以 override/extend change_form.html 和 change_list.html 模板,基于每个应用程序甚至每个模型。树应该如下:
-app1
-templates
-admin
-app1
-change_form.html
-change_list.html
如果您使用扩展而不是覆盖,您可以使用 extrahead
和 extrastyle
块访问 header。
/app1/templates/admin/app1/change_form.html
{% extends "admin/change_form.html" %}
{% block extrahead %}
{{ block.super }}
... your code here ...
{% endblock %}
您好,我一直在尝试自定义我的管理页面,我有一些特定于应用程序的管理页面需要自定义 javascript 和 css。我想在每个应用程序的 template/admin/ 中有不同的 base_site.html,包括所需的 javascript 和 css。问题是只显示第一个注册应用程序(在 settings.py 文件内)的 base_site.html 的更改。
- 我为每个应用程序自定义 base_site.html 的方法是否正确?如果是,我怎样才能让它工作?
- 如何只在某些管理页面包含css和js?
谢谢。
-app1
-templates
-admin
-base_site.html
-app2
-templates
-admin
-base_site.html
-app3
-templates
-admin
-base_site.html
-manage.py
如果您只想向您的管理员添加一些自定义 javascript 和 css,您最好使用 ModelAdmin 资产定义。有关更多信息,请参阅 django docs。像这样:
class ArticleAdmin(admin.ModelAdmin):
class Media:
css = {
"all": ("my_styles.css",)
}
js = ("my_code.js",)
至于base_site.html,您将无法为每个应用程序覆盖它,它是通用模板而不是特定于应用程序的模板。但无论如何,您可以 override/extend change_form.html 和 change_list.html 模板,基于每个应用程序甚至每个模型。树应该如下:
-app1
-templates
-admin
-app1
-change_form.html
-change_list.html
如果您使用扩展而不是覆盖,您可以使用 extrahead
和 extrastyle
块访问 header。
/app1/templates/admin/app1/change_form.html
{% extends "admin/change_form.html" %}
{% block extrahead %}
{{ block.super }}
... your code here ...
{% endblock %}