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 的更改。

谢谢。

-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

如果您使用扩展而不是覆盖,您可以使用 extraheadextrastyle 块访问 header。

/app1/templates/admin/app1/change_form.html

{% extends "admin/change_form.html" %}
{% block extrahead %}
{{ block.super }}
... your code here ...
{% endblock %}