Как добавить левую боковую панель в пользовательский шаблон админки django
Я создал одну пользовательскую страницу для Django admin, имя файла server.html
{% extends "admin/base_site.html" %}
{% block content %}
<h1>Server management</h1>
{% if status == 200 and message %}
<ul class="messagelist">
<li class="success">Response status: <strong>{{ status}}</strong></li>
<li class="success">{{message}}</li>
{% if stdout %}
<li class="info">{{stdout}}</li>
{% endif %}
</ul>
{% elif status is not 200 and message %}
<ul class="messagelist">
<li class="error">Response status: <strong>{{ status}}</strong></li>
<li class="error">{{message}}</li>
{% if stdout %}
<li class="error">{{stdout}}</li>
{% endif %}
</ul>
{% endif %}
<form method="post" id="menu_form" novalidate="">
{% csrf_token %}
<div>
<fieldset class="module aligned ">
<div class="form-row field-parent_menu">
<div>
<label for="id_parent_menu">Server action:</label>
<div class="related-widget-wrapper">
<select name="server_action" id="server_action">
<option value="" selected="">---------</option>
<option value="status">Status of the Server</option>
<option value="start">Start the Server</option>
<option value="stop">Stop the Server</option>
<option value="restart">Restart the Server</option>
</select>
</div>
</div>
</div>
</fieldset>
<div class="submit-row">
<input type="submit" style="float: left;" value="Submit" class="default" name="_submit">
</div>
</div>
</form>
{% endblock %}
И мой base_site.html выглядит так
{% extends 'admin/base.html' %}
{% load i18n static %}
{% block title %}{% trans "My admin" %}{% endblock %}
{% block branding %}
<div class="3a-image-header">
<img src="{% static 'images/admin-logo.svg' %}">
</div>
<div class="3a-text-header">
<h1 id="site-name">{% trans 'Admin Dashboard' %}</h1>
</div>
{% endblock %}
{% block extrastyle %}{{ block.super }}
<link rel="stylesheet" type="text/css" href='{% static "css/admin-extra.css" %}'/>
{% endblock %}
{% block extrahead %}
{{ block.super }}
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
{%now 'U' as version %}
<script src="{% static 'js/admin-custom.js'%}?v={{version}}"></script>
{% endblock %}
{% load i18n %}
<button class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar" aria-label="{% translate 'Toggle navigation' %}"></button>
<nav class="sticky" id="nav-sidebar">
{% include 'admin/app_list.html' with app_list=available_apps show_changelinks=False %}
</nav>
Но в url server.html не отображается левая боковая панель, как ее можно отобразить, чтобы на каждой странице была одинаковая панель администратора.
В настоящее время он отображается вот так без левого сайдбара.
Я исправил проблемы, в которых мне не хватало контекстных данных по умолчанию в классе Admin Model
class ServerManagementModelAdmin(admin.ModelAdmin):
model = ServerManagementModel
def get_urls(self):
view_name = '{}_{}_changelist'.format(
self.model._meta.app_label, self.model._meta.model_name)
return [
path('manage-server/', self.my_custom_view, name=view_name),
]
def my_custom_view(self, request):
#context = {}
context = dict(
# Include common variables for rendering the admin template.
self.admin_site.each_context(request), # side nav was not loading because this was not added.
# Anything else you want in the context...
#key=value,
)