常见用例:
用户选择要添加到购物车的项目
用户通过Paypal或PayPal等非现场支付网关进行支付 worldpay
用户重定向到付款页面并进行付款
支付门户将POST请求发送到回调网址
用户被重定向回您的网页
在第4步,通常会发生以下情况:
错误处理和反欺诈检查
更新订单/购物车模型及其他逻辑
我的问题与第4步有关:
在像Django-Paypal这样的应用中,不是对回调网址视图功能进行所有逻辑处理,而是使用信号。有这么好的理由吗?为什么不在回调url视图函数上执行所有逻辑?
答案 0 :(得分:1)
使用信号将django-paypal与您自己的应用程序分离。您可以在项目中的付款成功或失败时发生各种疯狂的自定义事件,并仍然使用默认提供的视图。
Django 1.3中基于类的视图确实可以扩展视图,并提供了一种解耦应用视图的替代方法。
在将逻辑放入视图之前应该考虑的其他因素是时间;如果逻辑可能需要很长时间(如任何I / O),请问自己它们对于手头的响应是否至关重要并考虑将其放入任务队列中,这样您就可以快速处理请求而不会阻塞。