Регистрация ModelAdmins с помощью custom_admin_site ничего не показывает при разбиении на несколько файлов

Я переписал админку сайта, чтобы немного настроить главную страницу админки, и теперь get_urls никогда не вызывается. Обратите внимание на то, что я определил

custom_admin.py:

class TestAdminSite(admin.AdminSite):
    index_template = "Test/admin_index.html"

    def index(self, request, extra_context=None):
        extra_context = extra_context or {}
        print("test")  # <-- this gets printed!
        return super().index(request, extra_context)

    def get_urls(self):
        urls = super().get_urls()
        print("test 2") # <-- not printed
        return urls

custom_admin_site = TestAdminSite(name="custom_admin")

admin.py:

from .custom_admin import custom_admin_site

в проекте urls.py я сделал:

from testapp.admin import custom_admin_site

urlpatterns = [..., path("admin/", custom_admin_site.urls), ... ]

но, как было сказано выше, get_urls никогда не вызывается. почему?

Вероятно, это связано с тем, что URL-резольвер загружается лабильно. Действительно, пока вы не делаете запрос или у вас нет приложения, которое, например, загружает URL resolver, он будет не проверять пути, а значит, не вызовет .get_urls(), поскольку корень urls.py не читается, а значит, и все последующие пути.

Если вы хотите, чтобы урлы были загружены, вам нужно каким-то образом заставить резолвер загрузиться. Самый простой способ - сделать HTTP-запрос. Если вы хотите запустить это в тесте, это, конечно, не всегда возможно. Вы можете принудительно загрузить резолвер с помощью:

from django.urls import get_resolver

get_resolver()
Вернуться на верх