Django:在 django admin 中扩展 base.html

Posted

技术标签:

【中文标题】Django:在 django admin 中扩展 base.html【英文标题】:Django: Extending base.html in django admin 【发布时间】:2021-02-05 09:03:04 【问题描述】:

我有一个带有垂直和水平菜单栏的 base.html 文件:

无论我想在哪里使用,我只需要写:

% extends 'base.html' %

% block content %
//html code

% endblock content %

但我不知道如何在 djando admin 的模板目录中使用相同的文件 base.html

我想要这样的输出:

我尝试了什么:

How to override and extend basic Django admin templates?

How do I correctly extend the django admin/base.html template?

Override Navbar in Django base admin page to be same as the base.html

我尝试了一些其他解决方案,只是不想增加问题的长度,base.html 文件的代码只有基本的引导程序,菜单的 html 代码。

我是 Django 新手,不胜感激!

【问题讨论】:

【参考方案1】:

您正在查看的内容类似于nav-global

试试这个:

首先在您的templates 文件夹中创建一个文件夹为admin,并在同一文件夹中创建一个html 文件(base_site.html)

假设您有单独的菜单栏 html 文件(假设该文件是 nav.html)。

将以下代码写入base_site.html:

% extends 'admin/base.html' %
% block nav-global %
% include 'nav.html' % #Your navigation html file
% endblock %

与问题无关:我找到了git repo,它可以让您了解如何自定义 django-admin 菜单。

【讨论】:

【参考方案2】:

您可以将管理员的基本模板扩展为

% extends <b>"admin/base.html"</b> %

例如:

% extends "admin/base.html" %
% block sidebar %
     block.super 
    <div>
        <h1>Extra links</h1>
        <a href="/admin/extra/">My extra link</a>
    </div>
% endblock %

另外,请确保您已将 admin 应用添加到 INSTALLED_APPS

INSTALLED_APPS = [
    # other apps,
    
    'django.contrib.admin',
    
    # other apps,
]

【讨论】:

【参考方案3】:

大约一年半前我遇到了同样的问题,我在 djangosn-ps.org 上找到了一个不错的模板加载器,它使这变得简单。它允许您在特定应用程序中扩展模板,使您能够创建自己的 admin/index.html 以从管理应用程序扩展 admin/index.html 模板。像这样:

% extends "admin:admin/index.html" %

% block sidebar %
    block.super
    <div>
        <h1>Extra links</h1>
        <a href="/admin/extra/">My extra link</a>
    </div>
% endblock %

【讨论】:

以上是关于Django:在 django admin 中扩展 base.html的主要内容,如果未能解决你的问题,请参考以下文章

Django admin 组件 原理分析与扩展使用 之 sites.py

在 django admin 中覆盖模板

django-admin 和django-admin.py的区别

Django解决扩展用户表时,后台Admin显示密码为明文的问题

Django 1.5 扩展 admin/change_form.html 对象工具

django1.6 admin不能登录