Как показывать сообщения Django auth только в интерфейсе администратора?
Вопрос
Сообщения аутентификации Django выглядят довольно удобными для уведомления пользователя CMS о какой-либо проблеме с конфигурацией.Дело в том, что сообщения удаляются при каждой загрузке страницы, если вы включаете контекстный процессор "django.core.context_processors.auth", и вы должны включить этот процессор, если хотите использовать интерфейс администратора.
Я попытался обойти это, добавив этот процессор в TEMPLATE_CONTEXT_PROCESSORS сразу после сопоставления URL-адреса администратора / перед вызовом admin.site.root, но, похоже, к тому времени он уже импортировал список процессоров.
Итак, есть ли какой-либо способ сделать это без изменения каких-либо самих файлов ядра Django и без полного исключения приложения django Auth из вашей конфигурации до последнего возможного момента?
Решение
Если бы система сообщений Django была критичной для моего сайта, я бы добавил сообщения в свои представления с помощью, например:
- интеграция с Growl
- какой-нибудь модальный диалог javascript, например Диалоги оповещения jQuery
Если вам действительно нужно взломать его, чтобы они отображались только на страницах администратора, то самым простым решением было бы скопировать функцию аутентификации в django.contrib.core.context_processors.py и поместить ее в context_processors.py в вашем собственном каталоге приложений.Используйте его в стеке CONTEXT_PROCESSORS вместо версии django.core и измените его так, чтобы он просматривал URL-адрес ЗАПРОСА и вызывал только user.get_and_delete_messages()
если это URL-адрес администратора.