Как исправить ошибку исключения для Django/Sendgrid?

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

exception ("'int' object has no attribute 'get'",)

Я провел отладку, и электронное письмо генерируется с уникальным ключом активации.
Все необходимые поля (от, получатели, тема, html email) были заполнены
. Я также создал новый api_key на sendgrid и он имеет полный доступ.
Я буду признателен за любые отзывы, если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Ниже приведен код, который я использую:

View.py:

class AccountEmailActivateView(FormMixin, View):
    success_url = '/'
    form_class = ReactivateEmailForm
    key = None

    def get(self, request, key=None, *args, **kwargs):
        self.key = key
        if key is not None:
            qs = EmailActivation.objects.filter(key__iexact=key)
            confirm_qs = qs.confirmable()
            if confirm_qs.count() == 1:
                obj = confirm_qs.first()
                obj.activate()
                messages.success(request, "your email has been confirmed, please login.")
                return redirect("account:login")
            else:
                activated_qs = qs.filter(activated=True)
                if activated_qs.exists():
                    reset_link = reverse("password_reset")
                    msg = """Your email has already been confirmed
                    Do you need to <a href="{link}">reset your password?</a>
                    """.format(link=reset_link)
                    messages.success(request, mark_safe(msg))
                    return redirect("account:login")
        context = {
            'form': self.get_form(),
            'key': key,
        }
        return render(request, 'registration/activation-error.html', context)

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        msg = """Activation link sent, please check email"""
        messages.success(self.request, msg)
        email = form.cleaned_data.get("email")
        obj = EmailActivation.objects.email_exists(email).first()
        user = obj.user
        new_activation = EmailActivation.objects.create(user=user, email=email)
        new_activation.send_activation_email()
        return super(AccountEmailActivateView, self).form_valid(form)

    def form_invalid(self,form):
        request = self.request
        context = {
            'form': form,
            'key': self.key,
        }
        return render(request, 'registration/activation-error.html', context)

account/Models.py:

    def send_activation_email(self):
        if not self.activated and not self.forced_expired:
            if self.key:
                base_url = getattr(settings, 'BASE_URL', None)
                print("base url", base_url)
                sg_api_key = getattr(settings, 'EMAIL_HOST_PASSWORD', None)
                key_path = reverse("account:email-activate", kwargs={'key': self.key})
                path = "{base}{path}".format(base=base_url, path=key_path)
                context = { 
                    'path': path,
                    'email': self.email,
                }
                txt_ = get_template("registration/emails/verify.txt").render(context)
                html_ = get_template("registration/emails/verify.html").render(context)
                subject = '1-Click Email Activation'
                from_email = settings.DEFAULT_FROM_EMAIL
                recipient_list = [self.email]
                sent_mail = send_mail(
                    subject,
                    txt_,
                    from_email,
                    recipient_list,
                    html_message=html_,
                    fail_silently=False,
                )
                print(send_mail)
                try:
                    api_key = os.environ.get('SENDGRID_API_KEY', None)
                    sg = SendGridAPIClient(api_key)
                    response = sg.send(sent_mail)
                    print("status code: ",response.status_code)
                    print("body", response.body)
                    print("headers", response.headers)
                except Exception as e:
                    print("exception", e.args)
        return False
Вернуться на верх