Nuestro grupo especializado pasados algunos días de investigación y recopilación de de datos, encontramos la solución, queremos que resulte de utilidad para tu proyecto.
Solución:
Esta guía parece bastante antigua. Preferiría aconsejarle que siga los documentos de Django.
someapp/admin.py
from django.contrib.admin import AdminSite
from django.http import HttpResponse
class MyAdminSite(AdminSite):
def get_urls(self):
from django.urls import path
urls = super().get_urls()
urls += [
path('my_view/', self.admin_view(self.my_view))
]
return urls
def my_view(self, request):
return HttpResponse("Hello!")
admin_site = MyAdminSite()
Fuente: https://github.com/django/django/blob/2.2/django/contrib/admin/sites.py#L194-L205
También debe actualizar su project/urls.py
y reemplazar path('admin/', admin.site.urls)
por path('admin/', admin_site.urls)
. no te olvides de from someapp.admin import admin_site
antes de.
La guía que vinculó es antigua y me sorprendió no encontrar nada que respondiera directamente a su pregunta en el último año más o menos.
- Cree un nuevo sitio de administración en su aplicación administrador.py o en un lugar conveniente.
- Crear una función en el nuevo AdminSitio que aumenta la
get_urls()
funciona con tus URL adicionales. - Asegúrate de que tu proyecto urls.py enlaces a los recién creados AdminSitio.
Lo siguiente funciona con Python 3.5.1 y Django 1.9.6.
mi_aplicación/admin.py
from django.contrib import admin
from django.contrib.admin import AdminSite
from django.http import HttpResponse
from my_app.models import SomeModel
class MyAdminSite(AdminSite):
def custom_view(self, request):
return HttpResponse("Test")
def get_urls(self):
from django.conf.urls import url
urls = super(MyAdminSite, self).get_urls()
urls += [
url(r'^custom_view/$', self.admin_view(self.custom_view))
]
return urls
admin_site = MyAdminSite()
@admin.register(SomeModel, site=admin_site)
class SomeModelAdmin(admin.ModelAdmin):
pass
mi_proyecto/urls.py
from django.conf.urls import url, include
from my_app.admin import admin_site
urlpatterns = [
url(r'^admin/', admin_site.urls),
...
]
valoraciones y reseñas
Tienes la opción de añadir valor a nuestro contenido informacional dando tu veteranía en las referencias.