我正在尝试整合django-paypal,我需要处理成功或失败的信号。
我已完成所有代码,但现在需要显示一个模板,告诉用户他们的付款已成功或失败。
如果我return HttpResponseRedirect...
没有任何反应,我无法render_to_response,因为我无法访问上下文(我正在使用sekazai或其他东西)。
我该怎么做?
## Called when django-paypal fails to validate PDT data
def pdt_failed_transaction(sender, **kwargs):
return HttpResponseRedirect(reverse('payment-error'))
答案 0 :(得分:2)
简短的回答:你做不到。这不是信号的设计目标。您需要将验证代码放入表单中并在视图中处理响应。这就是过程。
答案 1 :(得分:0)
通过Google搜索遇到这个问题,发现回复非常无用/无益。我认为这是一个有效的好奇心,虽然Chris Pratt是正确的,你不能修改信号中的请求或响应,但是想要根据刚刚登录的用户运行一些代码似乎是合理的。
要仅在有人登录包含重定向时运行某些代码,您可以在settings.py中使用中间视图和LOGIN_REDIRECT_URL设置https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url
在settings.py中:
LOGIN_REDIRECT_URL = reverse_lazy('app.views.after_login')
在app / views.py中:
@login_required
def after_login(request):
if conditions met:
return HttpResponseRedirect(reverse('home_alt'))
else:
return HttpResponseRedirect(reverse('home'))