Django Mixin вызывается дважды и возвращает разные ответы

Я боролся с этой ошибкой в течение недели. Я создал миксин BaseMixin для предоставления общих данных для двух представлений EmailView и PanelView.

class BaseMixin(ContenxtMixin):
 
    def get_context_data(self, hash, **kwargs):
        context =  super().get_context_data(**kwargs)

        try:
            ficha = self.get_ficha(hash)
            print("TRY")
        except Exception as e:
            print("EXCEPT")

       # more code

       return context

    def get_ficha(self, hash):
        pass

class EmailView(BaseMixin, TemplateView):
    template_name = "app/cotador/cotacao_email_produtividade.html"

    def get_context_data(self, hash, **kwargs):
        context = super().get_context_data(hash, **kwargs)

        # more code

        return context
class PanelView(BaseMixin, TemplateView):
    login_url = '/login/'
    redirect_field_name = 'next'
    template_name = "panel/proposta.html"

    def get_context_data(self, hash, **kwargs):
        context = super().get_context_data(hash, **kwargs)

        # more code

       return context

Когда я вызываю EmailView, он дважды вызывает BaseMixin. Сначала с параметром hash, переходя в блок try, а второй раз без параметра hash и вызывая исключение. Я заметил это поведение, печатая из блока try/except:

TRY
INFO 2022-07-27 20:33:04,954 "GET /minhas-propostas/proposta/951c18b30ba2999860fa3324199d1272ae0275480b6453f54f90e348fe834bad HTTP/1.1" 200 92114

EXCEPT
ERROR 2022-07-27 20:33:06,200 Internal Server Error: /minhas-propostas/proposta/Roboto-Regular.ttf

И, понятия не имею почему, Roboto-Regular.ttf отображается в url вместо хэша!!!

Затем, когда вызывается PanelView, он работает хорошо без ошибок и вызывается только один раз:

TRY
INFO 2022-07-27 20:44:34,664 "GET /cotacao-produtividade/print/487af3b7bf8e2615702ca662fe8746889750d67264e4ed10a8ada1e67f6ac9ed

Я не знаю, насколько это может быть полезно, но следуйте mro для классов.

EmailView

(<class 'agristamp.app.views.cotador.EmailView'>, <class 'agristamp.app.views.views.BaseMixin'>, <class 'django.views.generic.base.TemplateView'>, <class 'django.views.generic.base.TemplateResponseMixin'>, <class 'django.views.generic.base.ContextMixin'>, <class 'django.views.generic.base.View'>, <class 'object'>)

PanelView

(<class 'agristamp.app.views.panel.PanelView'>, <class 'agristamp.app.views.views.BaseMixin'>, <class 'django.views.generic.base.TemplateView'>, <class 'django.views.generic.base.TemplateResponseMixin'>, <class 'django.views.generic.base.ContextMixin'>, <class 'django.views.generic.base.View'>, <class 'object'>)

Прошу прощения за отсутствие ясности или информации. Заранее спасибо за любую помощь.

Вернуться на верх