0

與HttpResponseRedirect發送請求方面,我有一個Django應用程序和實施的支付網關功能。 現在我試圖爲不同方式對在Django

成功TRANSATION後,需要做的將用戶重定向到另一個頁面,顯示響應細節,讓我使用HttpresponseRedirect重定向的頁面,但我已經在視圖中的變量response包含效應初探細節,所以我需要將這個變量作爲上下文發送到呈現模板的重定向url,以便我可以使用該響應變量來顯示結果。

因此,對於上面的功能,我有三個方法

  1. 發送變量作爲查詢參數(這是不是在這種方法安全,因爲它是敏感的信用卡交易明細)
  2. 使用會話框架,其未在我的情況下工作,該代碼是下面
  3. Django的消息傳遞框架(這不是如此有用在這種情況下)

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方法

+0

您應該顯示'payment_success'視圖的代碼。 –

+0

那只是一個模板類視圖與像TEMPLATE_NAME一個屬性,反正上面的代碼 –

+0

所以掛在編輯,什麼是負責渲染'payment_template.html'? –

回答

0

我認爲這是在你的列表中的4項可能重定向URL,我建議使用。

完成你想要的最安全和最務實的辦法是有一個顯示存儲在數據庫中的實際結果的成功視圖。

這背後的想法是:

payment的觀點是,用戶執行對數據庫的操作。

payment_success視圖是告知已成功執行操作的用戶的,並與用戶期望的輸入的方法。

同樣,該操作是正確顯示的最好的辦法是顯示其數據庫,即它現在存儲關於該操作的數據庫上的結果。

+0

但在這種情況下,我不想存儲'付款網關'的結果所產生的響應,我想通過重定向到其他頁面來簡單地向用戶顯示響應,我們可以這樣做嗎?或者它是不可能的?還有,我們是否可以像上面那樣將對象存儲在會話變量中? –