Регистрация 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()