如何从请求中获取POST数据?

Vor*_*Vor 6 python django post

我只是用django设置了一个apache服务器,并测试它,在views.py中创建了一个非常简单的函数

channel = rabbit_connection()
@csrf_protect
@csrf_exempt
def index(request): 
    data={'text': 'Food truck is awesome! ', 'email': 'bob@yahoo.com', 'name': 'Bob'}
    callback(json.dumps(data))   
    context = RequestContext(request)    
    return render_to_response('index.html', context_instance=context)
Run Code Online (Sandbox Code Playgroud)

如果我向服务器发送GETPOST请求,此功能正常.但是我想从POST请求中获取这些数据.假设我发送这样的请求:

import pycurl
import simplejson as json

data = json.dumps({'name':'Bob', 'email':'bob@yahoo.com', 'text': u"Food truck is awesome!"})

c = pycurl.Curl()
c.setopt(c.URL, 'http://ec2-54-......compute-1.amazonaws.com/index.html')
c.setopt(c.POSTFIELDS, data)
c.setopt(c.VERBOSE, True)

for i in range(100):
    c.perform()
Run Code Online (Sandbox Code Playgroud)

我想在视图中看到的是这样的:

 if request.method == 'POST':
     data = ?????? # Something that will return me my dictionary
Run Code Online (Sandbox Code Playgroud)

以防万一:它始终采用JSON格式,字段未知.

JcK*_*ley 5

data= request.POST.get('data','')

data将从字典中返回一个值(key = )。如果您想要整个字典,只需使用request.POST。您在此处使用QueryDict类:

在HttpRequest对象中,GET和POST属性是django.http.QueryDict的实例。QueryDict是类似于字典的类,已定制为处理同一键的多个值。这是必需的,因为某些HTML表单元素尤其是为同一键传递多个值。

QueryDict实例是不可变的,除非您创建它们的copy()。这意味着您不能直接更改request.POST和request.GET的属性。

- Django文档