微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

'TypeError' 对象没有属性 ''

如何解决'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 举报,一经查实,本站将立刻删除。