Python 通过django使用sendgrid发送确认邮件

Python 通过django使用sendgrid发送确认邮件,python,postgresql,django-models,Python,Postgresql,Django Models,view.py 类注册(TemplateView): 模板名称='sign\u up.html' def get(self, request, *args, **kwargs): Form = Sign_up() return render(request, self.template_name, {'form': Form}) def post(self, request): data = self.request.POST.get try:

view.py 类注册(TemplateView): 模板名称='sign\u up.html'

def get(self, request, *args, **kwargs):
    Form = Sign_up()
    return render(request, self.template_name, {'form': Form})

def post(self, request):
    data = self.request.POST.get
    try:
        user = User(
            first_name=data('first_name'),
            last_name=data('last_name'),
            email=data('email'),
            username=data('username'),
        )
        user.set_password(data('password').strip())
        user.is_active = False
        user.save()
        request.session['SESSION_KEY'] = user.id

        try:
            sg = SendGridAPIClient(api_key=settings.SENDGRID_API_KEY)
            from_email = "commerce@gmail.com"
            to_email = "usmanimtiaz9991@gmail.com"
            subject = "Sending with SendGrid is Fun"
            content = Content("text/plain", "and easy to do anywhere, even with Python")
            mail = Mail(from_email, subject, to_email, content)
            response = sg.client.mail.send.post(request_body=mail.get())
            messages.add_message(request, messages.SUCCESS, response.status_code, response.body, response.headers)
            return HttpResponse('done')
        except Exception as c:
            return HttpResponse('failed:{}'.format(c), 500)
    except Exception as e:
        return HttpResponse('failed {}'.format(e), 500)
类ActivateAccount(视图):

Models.py

从django.db导入模型

从django.contrib.auth.models导入用户

从django.db.models.signals导入后保存

从django.dispatch导入接收方

类配置文件(models.Model):

@接收方(保存后,发送方=用户)

def update_user_配置文件(发送方、实例、已创建、**kwargs):

设置.py

EMAIL_BACKEND=“sgbackend.SendGridBackend”

SENDGRID\u API\u KEY='apikey'

电子邮件\u主机='smtp.sendgrid.net'

电子邮件\u主机\u用户='apikey'

电子邮件\u主机\u密码=SENDGRID\u API\u密钥

电子邮件端口=587

电子邮件\u使用\u TLS=True


我的注册功能工作正常,它显示错误HTTP error 400:Bad Request

错误消息是什么?你能分享吗?注册后的值保存在db中,但它显示了这个错误HTTP错误400:发送邮件时请求错误你的方法工作正常,但电子邮件发送过程给出了错误的请求响应,对吗?我查看了发送网格文档,意识到了一点。你能不能改一下这样的部分:from_email=email(“test@example.com“”)发送至_email=发送至(“”)test@example.com)请使用电子邮件和To函数,然后重试。现在我得到了以下错误:To类型的对象不可JSON序列化
def get(self, request, uidb64, token, *args, **kwargs):
    try:
        uid = force_text(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except (TypeError, ValueError, OverflowError, User.DoesNotExist):
        user = None

    if user is not None and account_activation_token.check_token(user, token):
        user.is_active = True
        user.profile.email_confirmed = True
        user.save()
        login(request, user)
        messages.success(request, 'Your account have been confirmed.')
        return redirect('home')
    else:
        messages.warning(request, 'The confirmation link was invalid, possibly because it has already been used.')
        return redirect('home')
user = models.OneToOneField(User, on_delete=models.CASCADE)

email_confirmed = models.BooleanField(default=False)
if created:

    Profile.objects.create(user=instance)

    instance.profile.save()