Saltar al contenido

¿Cómo agregar una vista personalizada a la interfaz de administración de Django?

Ya no tienes que investigar más por internet ya que llegaste al lugar exacto, contamos con la solución que buscas y sin complicaciones.

Solución:

Tienes 3 opciones aquí:

Uso de paquetes de terceros que proporcionan menú

Esto es bastante sencillo, hay algunos buenos paquetes que admiten el menú para el administrador y alguna forma de agregar su elemento al menú.

Un ejemplo de un paquete de terceros sería django-admin-tools. El inconveniente es que es un poco difícil de aprender. Otra opción sería usar django-adminplus pero al momento de escribir esto, no es compatible con Django 2.2.

Hackear con plantillas de administración de django

Siempre puede ampliar las plantillas de administración y anular las partes que desee, como se menciona en la respuesta de @Sardorbek, puede copiar algunas partes de la plantilla de administración y cambiarlas de la forma que desee.

Uso del sitio de administración personalizado

Si se supone que sus vistas solo actúan en el sitio de administración, entonces puede extender el sitio de administración (y tal vez cambiar el valor predeterminado), además de agregar enlaces a la plantilla, debe usar este método para definir sus vistas solo de administrador, ya que es más fácil de verificar permisos de esta manera.

Teniendo en cuenta que ya extendió su sitio de administración, ahora puede usar los métodos anteriores para agregar su enlace a la plantilla, o incluso extender get_app_list método, ejemplo:

class MyAdminSite(admin.AdminSite):
    def get_app_list(self, request):
        app_list = super().get_app_list(request)
        app_list += [
            
                "name": "My Custom App",
                "app_label": "my_test_app",
                # "app_url": "/admin/test_view",
                "models": [
                    
                        "name": "tcptraceroute",
                        "object_name": "tcptraceroute",
                        "admin_url": "/admin/test_view",
                        "view_only": True,
                    
                ],
            
        ]
        return app_list

También puede verificar si el usuario actual del personal puede acceder al módulo antes de mostrarles los enlaces. Se verá así al final:
ingrese la descripción de la imagen aquí

Problema aquí que su div no está dentro main-content. sugiero extender admin/index.html

Meter en app/templates/admin/index.html

% extends "admin/index.html" %
% load i18n static %

% block content %
% if app_list % % for app in app_list %
% for model in app.models % % if model.admin_url % % else % % endif % % if model.add_url % % else % % endif % % if model.admin_url % % if model.view_only % % else % % endif % % else % % endif % % endfor %
app.name
model.name model.name % trans 'Add' % % trans 'View' %% trans 'Change' % 
% endfor %
....
% else %

% trans "You don't have permission to view or edit anything." %

% endif %
% endblock %

El otro enfoque es agregar una aplicación personalizada a app_list. Pero es mucho más feo. Así que sugiero anular la plantilla.

Supongo que estás sobreescribiendo get_urls en AdminSite.

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *