【问题标题】:How to display a template/redirect to a template after processing a django signal?处理 django 信号后如何显示模板/重定向到模板?
【发布时间】:2011-07-18 19:24:03
【问题描述】:

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

【问题讨论】:

    标签: django paypal django-paypal


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      要仅在有人登录时运行包含重定向的代码,您可以在 settings.py https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url 中使用中间视图和 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'))
      

      【讨论】:

        猜你喜欢
        • 2020-08-03
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 2022-12-09
        相关资源
        最近更新 更多