Промежуточное ПО Django запускается дважды из-за запроса к jsi18n

Запуская чрезвычайно простой кусок промежуточного программного обеспечения на django 3.2, я показываю уведомления пользователям перед загрузкой каждой страницы. Код для этого выглядит следующим образом:

from django.contrib import messages
class ChangeNotifierMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        
    def __call__(self, request):
        messages.add_message(request, messages.INFO,"test")
        response = self.get_response(request)

Проблема, однако, в том, что, как и в Django: custom middleware called twice, это промежуточное ПО выполняется дважды на каждый запрос. Это происходит только в админ-интерфейсе django, и не из-за запросов к favicon, а из-за запросов к /admin/jsi18n/. Это делает причину этой проблемы другой (я нигде не указывал урлы для jsi18n)

В результате всего этого я получаю одно уведомление с текстом "test", как и должно быть. На backend/admin интерфейсе я получаю два уведомления с надписью "test". Как я могу заставить django middleware запускаться только один раз перед загрузкой страницы, есть ли способ гарантировать, что код запускается только один раз?

Похоже, что jsi18n должен представлять правильные языковые переводы для действий javascript.

Вы можете пропустить добавление вашего сообщения для всех ссылок, содержащих "jsi18n" if "jsi18n" not in request.path

from django.contrib import messages
class ChangeNotifierMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        
    def __call__(self, request):
        if "jsi18n" not in request.path:
            messages.add_message(request, messages.INFO,"test")
        response = self.get_response(request)
Вернуться на верх