【问题标题】:Send email after paying with Paypal Django使用 Paypal Django 付款后发送电子邮件
【发布时间】:2014-01-26 01:26:42
【问题描述】:

我有一个问题,我不明白为什么我不能让它工作。

我正在尝试在商店中的当前登录用户使用贝宝付款后向他发送电子邮件。

这是我的代码:

views.py

def send_email(**kwargs):

#Sacar el Carrito que necesitamos
user = kwargs.get('instance')
cart = Cart.objects.get(client=user)
cartitems = cart.items.all()

#Llamamos el html
ctx = {'pagesize':'A4', 'cart':cart, 'cartitems':cartitems}
html = render_to_string('frontend/order.html',ctx)

#Configuracion enviando mensaje via GMAIL
to_admin = 'sergiomonge10@gmail.com'
msg = EmailMultiAlternatives(subject='Success Email',to=[to_admin])
msg.attach_alternative(html,'text/html')
msg.send()

payment_was_successful.connect(send_email)
payment_was_flagged.connect(send_email)

但是因为没有用户而失败。我不知道为什么。任何帮助将不胜感激

【问题讨论】:

  • Estas seguro que la señal si se ejecuta?你确定信号被调用了吗?
  • 是的,付款成功,但是当贝宝网站重定向到我的网站时,信号 payment_was_successful.connect(send_email) 应该可以完成工作,但它会发送一个错误,这是因为 cart = Cart.objects.get(client=user) 没有购物车,因为没有用户:S 这就是我需要的,Si hablo español。 xD
  • 好的,所以你必须调试,在 user=... 输入 print kwargs, dir(kwargs.get('instance')) 之前,告诉我它打印了什么, Lo supuse por los comentarios de el código :)
  • 响应为无。购物车匹配查询不存在。错误在这里“cart = Cart.objects.get(client=user)”,Por cierto te mande una invitacion a facebook,ya que veo que eres djanguero
  • 不,但是 print kwargs, dir(kwargs.get('instance')) 这打印什么? Al rato te acepto, si soy djanguero :)

标签: python django paypal


【解决方案1】:

查看doc 模型PayPalNVP 有一个字段user 是django 的UserForeignKey,所以要使用这个你必须在paypal.pro 中使用signals

from paypal.pro.signals import payment_was_successful, payment_was_flagged

然后进入你只放的send_email函数:

user = kwargs.get('sender').user

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多