'in <string>' 需要字符串作为左操作数,而不是 BoundWidget sendgrid
'in <string>' requires string as left operand, not BoundWidget sendgrid
我正在开发一个 Django Web 应用程序。我有一个联系我们的表格。当用户提交表单时,表单中的消息将作为邮件发送到预定义的电子邮件 ID。
为了发送电子邮件,我使用 sendgrid。为此,我创建了一个帐户并生成了一个 api。我将 api 密钥存储在一个 dotenv 文件中,并在 settings.py 文件
中访问 api
.env 文件
SENDGRID_API_KEY=XXXXXXXXXXXXXXXXXXXX
settings.py
import os
from dotenv import load_dotenv
load_dotenv()
...
EMAIL_BACKEND = "sendgrid_backend.SendgridBackend"
SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY")
SENDGRID_SANDBOX_MODE_IN_DEBUG=False
views.py
def index(request):
if request.method == "POST":
ContactUsForm = ContactUs(request.POST)
if ContactUsForm.is_valid():
firstName = ContactUsForm['firstName']
fromEmail = ContactUsForm['email']
message = ContactUsForm['message']
send_mail(subject=f"{firstName} sent you a message", message=message, from_email=fromEmail, recipient_list=['toaddress@email.com'])
return redirect('home')
else:
ContactUsForm = ContactUs()
context = {'contactUs': ContactUsForm}
return render(request, 'index.html', context)
但是当我提交表单时,我收到了这个错误信息
TypeError: 'in <string>' requires string as left operand, not BoundWidget
不知道哪里错了
这是link我跟着用sendgrid
发送邮件
您访问的是字段本身,而不是经过验证的数据。您需要:
firstName = ContactUsForm.cleaned_data['firstName']
fromEmail = ContactUsForm.cleaned_data['email']
message = ContactUsForm.cleaned_data['message']
我正在开发一个 Django Web 应用程序。我有一个联系我们的表格。当用户提交表单时,表单中的消息将作为邮件发送到预定义的电子邮件 ID。
为了发送电子邮件,我使用 sendgrid。为此,我创建了一个帐户并生成了一个 api。我将 api 密钥存储在一个 dotenv 文件中,并在 settings.py 文件
中访问 api.env 文件
SENDGRID_API_KEY=XXXXXXXXXXXXXXXXXXXX
settings.py
import os
from dotenv import load_dotenv
load_dotenv()
...
EMAIL_BACKEND = "sendgrid_backend.SendgridBackend"
SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY")
SENDGRID_SANDBOX_MODE_IN_DEBUG=False
views.py
def index(request):
if request.method == "POST":
ContactUsForm = ContactUs(request.POST)
if ContactUsForm.is_valid():
firstName = ContactUsForm['firstName']
fromEmail = ContactUsForm['email']
message = ContactUsForm['message']
send_mail(subject=f"{firstName} sent you a message", message=message, from_email=fromEmail, recipient_list=['toaddress@email.com'])
return redirect('home')
else:
ContactUsForm = ContactUs()
context = {'contactUs': ContactUsForm}
return render(request, 'index.html', context)
但是当我提交表单时,我收到了这个错误信息
TypeError: 'in <string>' requires string as left operand, not BoundWidget
不知道哪里错了
这是link我跟着用sendgrid
发送邮件您访问的是字段本身,而不是经过验证的数据。您需要:
firstName = ContactUsForm.cleaned_data['firstName']
fromEmail = ContactUsForm.cleaned_data['email']
message = ContactUsForm.cleaned_data['message']