📜  更改 django 管理员标题 - Python (1)

📅  最后修改于: 2023-12-03 15:10:32.069000             🧑  作者: Mango

更改 Django 管理员标题 - Python

在 Django 中,管理后台是一个很方便的工具来管理你的应用程序。默认情况下,Django 管理后台的标题为 "Django 管理"。但是,你可以通过以下方法自定义标题和其他元素。

自定义 Django 管理员模板

要自定义 Django 管理员模板,首先需要创建一个名为 admin 的文件夹,并在该文件夹内创建一个名为 base_site.html 的文件。

<!DOCTYPE html>
{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}

{% block nav-global %}
{# 这里是全局导航栏 #}
{% endblock %}

{% block breadcrumbs %}
{# 这里是面包屑导航 #}
{% endblock %}

{% block content %}
<div id="content-main">
{% block messages %}
{% if messages %}
{# 这里是消息 #}
{% endif %}
{% endblock messages %}

{% block content_title %}
<h1>{{ title }}</h1>
{% endblock %}

{% block object-tools %}
{% if title %}
<div style="clear:both;padding-top:30px;">
{% block object-tools-items %}
{# 这里是对象工具 #}
{% endblock %}
</div>
{% endif %}
{% endblock %}

{% block object-tools-special %}{% endblock %}

{% block admin-panel %}
{% if site_url %}
<div id="panel">
<ul>
{% if site_url %}
<li><a href="{{ site_url }}" id="view_site">{{ site_title|default:_('View site') }}</a></li>
{% endif %}
{% if user.is_active and user.is_staff %}
<li><a href="{% url 'admin:password_change' %}" id="change-password">{% trans 'Change password' %}</a></li>
{% endif %}
{% if user.is_active and user.is_staff %}
<li><a href="{% url 'admin:logout' %}" id="logout">{% trans 'Log out' %}</a></li>
{% endif %}
{% if user.is_active and user.is_staff %}
<li><a href="{% url 'admin:history_recently_changed' %}" id="recent-actions">{% trans 'Recent actions' %}</a></li>
{% endif %}
</ul>
</div>
{% endif %}
{% endblock %}

{% block content_objects %}
{% if cl %}
<div class="module">
<div class="caption">
{% block object_list_title %}
<table cellspacing="0" summary="{% trans ' Recently added ' %}{% localizestring cl.opts.verbose_name_plural %}">
<thead>
<tr>
{% block object-tools-header %}
{# 这里是对象工具的标题 #}
{% endblock %}
</tr>
</thead>
</table>
{% endblock %}
</div>
<div class="module">
{% if action_form and actions_on_top %}
{% get_current_language as LANGUAGE_CODE %}
<form action="{{ action_form.action }}" method="post" id="changelist-form">{% csrf_token %}
<div>
{% if action_form.select_across %}
<input type="hidden" name="{{ action_form.select_across.name }}" value="0" id="{{ action_form.select_across.id }}" />
{% endif %}
{% if action_form.cleaned_data.action == 'delete_selected' %}
{% if action_form.cleaned_data.select_across %}
{# 这里是对选中的所有对象进行操作 #}
{% else %}
{# 这里是只对选中的对象逐一操作 #}
{% endif %}
{% endif %}
{% for result in cl.result_list %}
{% endfor %}
</div>
{% if cl.formset and cl.formset.is_multipart %}
{% for form in cl.formset.forms %}
{% for field in form %}
{% if field.is_hidden %}
{{ field }}
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}
{% for result in cl.result_list %}
{% endfor %}
{% block pagination %}
{# 这里是分页 #}
{% endblock %}
</form>
{% endif %}
{% endblock %}
</div>
</div>
{% endif %}
{% endblock %}
</div>
{% endblock %}

在此示例中,我们创建了 base_site.html 模板,其中包含了许多块标签,可以让我们自定义 Django 管理员界面的各个方面。

使用自定义 Django 管理员模板

定义好了自定义 Django 管理员模板,我们就可以在启用管理前台的应用程序中使用它了。只需在 settings.py 中设置以下内容即可:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
            ],
            'builtins': [
                'django.contrib.admin.templatetags.admin_static',
                'django.contrib.admin.templatetags.admin_urls',
                'django.contrib.staticfiles.templatetags.staticfiles',
            ],
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
            ],
        },
    },
]

# ...

# 更改 Django 管理员的标题
admin.site.site_header = "My custom django admin"

在这个示例中,我们将 My custom django admin 赋值给 admin.site.site_header,使其成为了 Django 管理者后台的标题。

现在,我们已经成功地更改了 Django 管理员界面的标题。你还可以按照相同的模式自定义其他元素。