2017-10-09 49 views
0

我正在嘗試按照它們在Django中收到的確切順序獲取POST數據參數。如何在Django中以正確的順序獲取HTTP POST參數?

我有這個在我的views.py

@require_POST 
@csrf_exempt 
def paypal_ipn_listener(request): 
    print request.POST 
    print request.body 

request.POST的數據是QueryDict是無序的,因此不適合我的需要。

試圖訪問request.body拋出異常:

RawPostDataException: You cannot access body after reading from request's data stream 

我想這發生異常,因爲我@require_POST@csrf_exempt裝飾這或許調用一些中間件讀取POST數據流。

無論如何,我的問題是如何獲得HTTP請求POST數據的確切順序?

我需要保持訂單滿足PayPal IPN implementation requirements

**更新**

我結束了手動解析request.body因爲沒有更好的解決辦法。

+1

因爲你訪問'request.POST'你得到這個錯誤*第一個*。如果您刪除了該行,則不會收到錯誤消息。 –

+0

@DanielRoseman好主意,但我刪除了第一印,我仍然得到相同的錯誤。 –

+0

@DanielRoseman經過進一步的測試,似乎是這樣。作爲回答發佈,我會接受它。 –

回答

0

如果你刪除@require_POST,做這樣的事情?:

from django.http import Http404 

@csrf_exempt 
def paypal_ipn_listener(request): 
    if request.method != 'POST': 
     raise Http404('some error') 
    print request.body 
相關問題