Ошибка: Представление не вернуло HttpResponse при попытке отправить электронное письмо

Я хочу вручную утверждать отчеты для клиентов после того, как они согласились с условиями. Для этого я хочу, чтобы при нажатии клиентом кнопки "Принять" мне отправлялось электронное письмо. Вместо этого я получаю следующую ошибку:

Представление accounts.views.TermsView не вернуло объект HttpResponse. Вместо этого оно вернуло None.

Искал такую же ошибку здесь, но не смог решить с помощью этих. Извините, я новый программист.

views.py

class TermsView(TemplateView):
    template_name = "accounts/terms_of_service.html"

    ...

    def post(self, *args, **kwargs):
        self.request.user.terms_accepted = timezone.now()
        self.request.user.save(update_fields=["terms_accepted"])
    
    def send_mail(self):
        messages.add_message(
            self.request,
            messages.SUCCESS,
            _("Thank you! We will contact you as soon as possible."),
        )

        send_terms_agreed_reports(self.request.company, self.request.user)
        return redirect("stays:dashboard")

emails.py

def send_terms_agreed_reports(company, user):
    try:
        email_subject = "New company wants to use reports"

        return send_email(
            settings.TERMS_AGREED_ENABLE_REPORTS,
            email_subject,
            "emails/terms_agreed_reports.html",
            {"company": company.name, "reg_code": company.reg_code, "name": user.name, "email": user.email,
         "phone": user.phone},
        )
    except Exception:
        logger.exception("Could not send message")

Ваш метод post в конечном итоге должен вернуть ответ HTTP, например, выполнив send_mail:

class TermsView(TemplateView):
    template_name = "accounts/terms_of_service.html"

    # …

    def post(self, *args, **kwargs):
        self.request.user.terms_accepted = timezone.now()
        self.request.user.save(update_fields=['terms_accepted'])
        return self.send_mail()
Вернуться на верх