如何在处理django信号后显示模板/重定向到模板?

时间:2011-07-18 19:24:03

标签: django paypal django-paypal

我正在尝试整合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'))

2 个答案:

答案 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'))