0

我正在尝试集成 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'))
4

2 回答 2

2

简短的回答:你不能。这不是信号的设计目的。您需要将验证代码放入表单并处理视图中的响应。这就是过程。

于 2011-07-18T19:27:14.300 回答
0

通过谷歌搜索发现了这个问题,发现这个答案非常无用/无用。我认为这是一个合理的好奇心,虽然 Chris Pratt 是正确的,你不能修改信号中的请求或响应,但想要基于刚刚登录的用户运行一些代码似乎是合理的。

要仅在有人登录时运行包含重定向的代码,您可以在 settings.py https://docs.djangoproject.com/en/dev/ref/settings/#login-中使用中间视图和 LOGIN_REDIRECT_URL 设置重定向网址

在 settings.py 中:

LOGIN_REDIRECT_URL = reverse_lazy('app.views.after_login')

在应用程序/views.py 中:

@login_required
def after_login(request):
    if conditions met:
        return HttpResponseRedirect(reverse('home_alt'))
    else:
        return HttpResponseRedirect(reverse('home'))
于 2013-02-22T22:56:50.740 回答