从Django视图发送电子邮件

时间:2019-05-12 19:07:49

标签: django function email

我有一个用于订购零件的Web应用程序,我想在用户订购零件时包括一封电子邮件。我在将电子邮件功能添加到基于功能的视图时遇到了麻烦。

我有一个用于保存订单数据的现有功能,我想将电子邮件功能简单地添加到同一视图中。当我尝试直接添加它时,我不断收到有关不一致空格的错误消息。因此,我在新订单视图的下方创建了一个新的电子邮件功能,但是我不知道如何将某些参数从一个功能传递给另一个功能。

这很接近,但是当我调用New_Order函数时,它会为未定义的order_instance引发错误。

Views.py

const color =  {
  "connected":"green",
  "connection failure": "red"
};

const applyColors = (text) => {
  let c = "blue"; //default color
  Object.keys(color).map(function(key, index){
      if(text.contains(key)) {
        c = color[key];
      }
  });
  return `<span style="color:${c}">${text}</span>`;
}

console.log(applyColors("connected"))

我可以使用一个组合函数或两个函数并将参数从一个传递到下一个。如果由于某种原因我无法将步骤添加到一个函数中,您可以解释原因吗?我仍在学习,并且我肯定在这方面缺少一些东西。

谢谢 最高

2 个答案:

答案 0 :(得分:1)

向Order_Email添加参数:

def Order_Email(order_instance):

并在调用函数时传递值:

return Order_Email(order_instance)

因此您的代码将如下所示:

@login_required
def New_Order(request):
    if request.user.userprofile.shipment_access:
        if request.method == 'POST':
            form = OrderForm(request.POST)
            if form.is_valid():
                order_instance = form.save(commit=True)
                order_instance.save()
            return Order_Email(order_instance)
        else:
            form = OrderForm()
        return render(request, 'app/New_Order.html', {'form': form})
    else: 
        raise PermissionDenied

def Order_Email(order_instance):
    subject = "Part Order" + order_instance.id
    orderNum = order_instance.id
    from_email = settings.EMAIL_HOST_USER
    to_email = ['dummyemail@gmail.com']
    message = order_instance
    send_mail(subject=subject, from_email=from_email, recipient_list=to_email, message=message, fail_silently=False)
    return HttpResponseRedirect('/Orders')

答案 1 :(得分:0)

这是一个完全标准的函数,只需像往常一样将参数传递给它即可。 (还要注意,该调用必须在if块内。)

        if form.is_valid():
            order_instance = form.save(commit=True)
            order_instance.save()
            return Order_Email(order_instance)
...

def Order_Email(order_instance):