2017-10-09 45 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 
相关问题