在Django中发送电子邮件的if语句

时间:2013-08-06 21:21:25

标签: python django if-statement logic

我正在尝试这样做,以便只有在布尔字段为真时才会发送此电子邮件。不幸的是,我经常遇到无效的语法错误。

在models.py

class PurchaseOrder(models.Model):
    has_responded = models.BooleanField(default = True)
    confirmed = models.NullBooleanField(null=True)
在views.py中

def confirm(request, itemnum):
    item = get_object_or_404(PurchaseOrder, item_number = itemnum)
    item.confirmed = True
    item.save()
    confirm_title = 'Purchase Order %s Confirmed' % item.product
    send_mail(confirm_title, 'Check the Product Order System to see the updated list.', 'myemail@gmail.com',['youremail@gmail.com'], fail_silently=False)
    return HttpResponse('Product  %s  confirmed' % item.product )

我想将has_responded默认为True。然后执行if语句,其中def confirm仅在has_responded为True时执行。在def结束时,我想将has_responded设为false。因此,它只会执行一次。不幸的是,我经常遇到错误,我不知道为什么。上面的代码都有效,但是当我实现if语句时,它就崩溃了。

编辑:

这是给我错误的代码

  def confirm(request, itemnum):
     item = get_object_or_404(PurchaseOrder, item_number = itemnum)
     if item.has_responded == True
         item.confirmed = True
         item.save()
         confirm_title = 'Purchase Order %s Confirmed' % item.product
         send_mail(confirm_title, 'Check the Product Order System to see the updated list.', 'myemail@gmail.com',['youremail@gmail.com'], fail_silently=False)
         return HttpResponse('Product  %s  confirmed' % item.product )
         item.has_responded = False

1 个答案:

答案 0 :(得分:2)

您忘记了:之后的if item.has_responded == True。它应该是:

if item.has_responded == True:

您的代码中还有更多错误:

  1. 您需要在item.has_responded = False语句之前移动return,否则该行代码将不会执行
  2. HttpResponse
  3. 时发送适当的item.has_responded = False