Самый простой способ добавить представление в мой пользовательский интерфейс администратора Django?
Каким простейшим способом можно добавить представление в мой административный интерфейс Django (3.2)? То есть, добавить URL mysite.com/admin/my-view
так, чтобы посещение этого URL действовало как остальная часть админки (в частности, требовало аналогичных прав).
На эту тему есть целая страница, но для меня не очевидно, как собрать ее вместе.
https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-views-to-admin-sites говорит, что вы можете добавить get_urls
к вашему AdminSite
классу. Итак, мне нужен собственный класс AdminSite
. И мне нужно зарегистрировать его в приложениях, возможно?
Я сделал вот что:
class MyAdminSite(admin.AdminSite):
def get_urls(self):
urls = super().get_urls()
my_urls = [
path('my-view', self.my_view, name='my-view')
]
return my_urls + urls
def my_view(self, request):
# do something ..
admin_site = MyAdminSite(name='my_admin')
и это в urls.py:
from .admin import admin_site
urlpatterns = [
path('admin/', admin_site.urls),
и это в неизменном виде в INSTALLED_APPS
в настройках:
'django.contrib.admin',
Но теперь он показывает администратора только для одного приложения, а не для всех приложений. Как сделать так, чтобы он автоматически обнаруживал все приложения, как раньше? Или есть более простой способ?
P.S. Существует также вопрос по этому поводу, но ответ не был достаточно подробным, чтобы я мог его использовать.
EDIT: Я читаю Make new custom view at django admin и Django (1.10) override AdminSite ..