Мой django проект имеет приложение. Папка приложения - main_menu_app. Я не хотел всегда вводить что-то вроде:
{% url 'main_menu_app:PAGE' %}
в шаблонах, а скорее
{% url 'main_menu:PAGE' %}
, поэтому внутри моего mysite / urls.py у меня есть это:
path('main_menu/', decorator_include(login_required, ('main_menu_app.urls', 'main_menu'))),
Это название моего приложения "main_menu". Это прекрасно работает в большинстве случаев. К сожалению, недавно у меня появилась необходимость добавлять подробное имя текущего приложения в каждый шаблон в качестве переменной контекста. Я могу сделать это с помощью контекстного процессора, и обычно вы можете разрешить приложение, в котором вы находитесь, выполнив:
request.resolver_match.app_name
к сожалению, мое решение преобразуется в "main_menu", и когда я пытаюсь получить app_config с это имя (которое содержит подробное имя), оно не может найти его:
from django.apps import apps
app_name = request.resolver_match.app_name
apps.app_configs[app_name] # KeyError: 'main_menu'
apps.app_configs
OrderedDict([..., ('main_menu_app', <MainMenuAppConfig: main_menu_app>), ...])
Есть ли какой-нибудь способ, которым я могу разрешить то, что я получаю из request.resolver_match, в app_config? Я знаю, что могу жестко закодировать имя main_menu_app, но я бы предпочел сделать это динамически, поэтому оно всегда работает для всех приложений.