Python 通过django使用sendgrid发送确认邮件
view.py 类注册(TemplateView): 模板名称='sign\u up.html'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:
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()