在django中使用HttpResponseRedirect发送请求上下文的不同方法

时间:2013-08-16 08:57:54

标签: django redirect payment-gateway httpresponse django-sessions

我有一个django应用程序并实现了支付网关功能。 现在我正在尝试的是

成功转换后,需要将用户重定向到另一个显示响应详细信息的页面,以便我使用HttpresponseRedirect重定向页面,但我在包含响应的视图中有变量response详细信息,所以我需要将此变量作为上下文发送到呈现模板的重定向URL,以便我可以使用该响应变量来显示结果。

所以对于上述功能,我有三种方法

  1. 将变量作为查询参数发送(在此方法中不安全,因为它是敏感的信用卡交易详情)
  2. 使用会话框架,在我的情况下不起作用,代码在
  3. 下面
  4. Django消息传递框架(在这种情况下不太有用)
  5. views.py

    def payment(request):
        amount = 1
        if request.method == 'POST':
            form = CreditCardForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                ...........
                ........... 
                response = stripe.payment_purchase(amount,data) 
                request.session['response'] = response
                return HttpResponseRedirect(reverse('paygate:payment_success'))
        else:
            form = CreditCardForm(initial={'number':'4242424242424242'})
        return render_to_response('payment/stripe_payment_form.html',{'form': form,
                                                 'response':response,},
                                                 context_instance=RequestContext(request))
    

    payment_success网址视图

    class PaymentSuccess(TemplateView):
        template_name = 'payment/payment_success.html'
    

    我尝试访问模板中的response变量,但不显示任何内容

    payment_success.html

    {% extends "base.html" %}
    {% block main_title %}Payment{% endblock %}
    {% block title %}Success{% endblock %}
    
    {% block content %}
      <h1>Response Details</h1>
      <p>Your status is <span>{{ request.session.response }}</span></p>
    {% endblock %} 
    

    所以任何人都可以告诉我使用credit card payment details方法发送上下文变量(在本例中为HttpResponseRedirect)以重定向网址的各种不同安全可靠方式

1 个答案:

答案 0 :(得分:0)

我认为列表中有一个可能的项目,我建议使用。

实现目标的最安全,最实用的方法是成功查看显示存储在数据库中的实际结果。

这背后的想法是:

payment视图是用户对您的数据库执行的操作。

payment_success视图是一种告诉用户操作已成功执行并使用用户所需输入的方法。

同样,显示操作正确的最佳方式是在数据库上显示其结果,即现在存储在数据库中的有关该操作的内容。

相关问题