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.py的区别
Django解决扩展用户表时,后台Admin显示密码为明文的问题