2011-07-18 67 views
0

我正在嘗試集成django-paypal,並且需要處理成功或失敗的信號。如何在處理django信號後顯示模板/重定向到模板?

我已經完成了我所有的代碼,但我現在需要顯示一個模板,告訴用戶他們的付款已成功或失敗。

如果我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

這很煩人,但謝謝,我會改變我的方法。 – Tim

0

通過谷歌搜索來找到這個問題,發現這個回答很沒用/沒有幫助。我認爲這是一種有效的好奇心,雖然克里斯普拉特是正確的,你不能修改信號中的請求或響應,但想要基於剛剛登錄的用戶運行一些代碼似乎是合理的。

要運行

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

/views.py:一些代碼,只有當有人登錄包含重定向,您可以在您的settings.py​​

settings.py中

使用的媒介觀和LOGIN_REDIRECT_URL設置:

@login_required 
def after_login(request): 
    if conditions met: 
     return HttpResponseRedirect(reverse('home_alt')) 
    else: 
     return HttpResponseRedirect(reverse('home'))