如何解决'TypeError' 对象没有属性 ''
我在 Django 中使用 SendGrid,我有两个独立的功能。一个使用 SendGrid 代码(见下文 - 工作代码)工作,然后另一个不断收到错误 - 'TypeError' 对象没有属性 'booking_message'。
我认为这个问题很小,但我一直想念它。
感谢我能得到的任何帮助。
(注意 - 我已经取出了模板 ID、发件人和收件人电子邮件地址以及 SendGrid API 应用程序 ID,只是让 '')我没有时间在发布之前使用环境变量来隐藏密钥。
工作代码
class ASPBookingsCreateView(CreateView):
form_class = ASPBookingsForm
model = ASPBookings
template_name = "vistours/asp.html"
def post(self,request):
# Save the new booking to the database.
if request.method == 'POST':
form = ASPBookingsForm(request.POST)
if form.is_valid():
print(request.POST)
form.save()
# Get the data for the emails.
asp_data = ASPBookings.objects.all()
asp_data.contact_name = request.POST['contact_name']
asp_data.booking_email = request.POST['email']
asp_data.booking_date = request.POST['booking_date']
asp_data.booking_time = request.POST['booking_time']
asp_data.program_type =request.POST['program_type']
# Format Date and Time
formatted_date = parse_date(asp_data.booking_date).strftime('%A %d %B %Y')
print(formatted_date)
# Add SendGrid Template ID's
BOOKING_TEMPLATE_ID = ''
UPDATE_TEMPLATE_ID = ''
# Send confirmation email of the booking.
booking_message = Mail(from_email='',to_emails=[asp_data.booking_email],)
# Add Template ID to booking message.
booking_message.template_id = BOOKING_TEMPLATE_ID
# Add Dynamic Data
booking_message.dynamic_template_data = {
'contact_name': asp_data.contact_name,'booking_date': formatted_date,'booking_time': asp_data.booking_time,}
# Send new booking alert to VIS Staff.
message = Mail(from_email='',to_emails='')
message.template_id = UPDATE_TEMPLATE_ID
# Add Dynamic Data
message.dynamic_template_data = {
'contact_name': asp_data.contact_name,'program_type': asp_data.program_type,}
# Send Email
try:
sg = SendGridapiclient('')
sg2 = SendGridapiclient('')
response = sg.send(booking_message)
responses = sg2.send(message)
except Exception as e:
print(e.message)
else:
print(form.errors)
form()
return render(request,'vistours/success.html')
代码获取类型错误 错误 - 'TypeError' 对象没有属性 'booking_message'。
def confirm_booking(request,id,program_type):
if program_type == 'asp':
confirm_booking = ASPBookings.objects.get(id=id)
confirm_booking.status = 'Confirmed'
confirm_booking.save()
# Format Date and Time
formatted_date = confirm_booking.booking_date.strftime('%A %d %B %Y')
# print(formatted_date)
# Add SendGrid Template ID's
CONFIRMED_BOOKING_TEMPLATE_ID = ''
# Send confirmation email of the booking.
booking_message = Mail(from_email='',to_emails=[confirm_booking.email])
# Add Template ID to booking message.
booking_message.template_id = CONFIRMED_BOOKING_TEMPLATE_ID
# Add Dynamic Data
booking_message.dynamic_template_data = {
'contact_name': confirm_booking.contact_name,'booking_date': confirm_booking.booking_date,'booking_time': confirm_booking.booking_time,}
# Send Email
try:
sg = SendGridapiclient('')
response = sg.send(booking_message)
except Exception as e:
print(e.booking_message)
elif program_type == 'bfbw':
confirm_booking = BFBWBookings.objects.get(id=id)
confirm_booking.status = 'Confirmed'
confirm_booking.save()
# # Format Date and Time
# formatted_date = parse_date(confirm_booking.booking_date).strftime('%A %d %B %Y')
# print(formatted_date)
# Add SendGrid Template ID's
BOOKING_TEMPLATE_ID = ''
# Send confirmation email of the booking.
booking_message = Mail(from_email='',to_emails=[confirm_booking.email])
# Add Template ID to booking message.
booking_message.template_id = BOOKING_TEMPLATE_ID
# Add Dynamic Data
booking_message.dynamic_template_data = {
'contact_name': confirm_booking.contact_name,}
# Send Email
try:
sg = SendGridapiclient('')
response = sg.send(booking_message)
except Exception as e:
print(e.booking_message)
return HttpResponseRedirect(request.Meta.get('HTTP_REFERER'))
解决方法
您正在尝试在您的 except 块中打印 e.booking_message,错误很可能没有此属性? – 伊恩·谢尔文顿 6 月 25 日 4:37
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。