Как показывать аутентификационные сообщения Django только в интерфейсе администратора? - PullRequest
0 голосов
/ 23 марта 2009

Аутентификационные сообщения Django выглядят довольно удобно для уведомления пользователя CMS о некоторой проблеме конфигурации. Дело в том, что сообщения удаляются при каждой загрузке страницы, если вы включили контекстный процессор "django.core.context_processors.auth", и вам нужно включить этот процессор, если вы хотите использовать интерфейс администратора.

Я попытался взломать его, добавив этот процессор в TEMPLATE_CONTEXT_PROCESSORS сразу после сопоставления административного URL-адреса / перед вызовом admin.site.root, но, похоже, к тому времени он уже импортировал список процессоров.

Так есть ли способ сделать это без изменения каких-либо файлов ядра Django и без полного исключения приложения Django Auth из вашей конфигурации до самого последнего момента?

1 Ответ

0 голосов
/ 24 марта 2009

Если бы система сообщений Django была критической для моего сайта, я бы добавил сообщения в свои представления, например:

Если вам действительно нужно взломать его, чтобы они отображались только на страницах администратора, то самым простым решением было бы скопировать функцию аутентификации в django.contrib.core.context_processors.py и поместить ее в context_processors.py в вашем собственном приложении каталог. Используйте его в стеке CONTEXT_PROCESSORS вместо версии django.core и измените его так, чтобы он смотрел на URL-адрес ЗАПРОСА и вызывал user.get_and_delete_messages(), только если это адрес администратора.

...