首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从请求中获取POST数据?

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

Stack Overflow用户
提问于 2013-07-03 03:09:02
回答 2查看 21.2K关注 0票数 7

我刚刚用django设置了一个apache服务器,为了测试它,我用views.py编写了一个非常简单的函数。

代码语言:javascript
代码运行次数:0
运行
复制
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)

如果我向服务器发送一个GETPOST请求,这个函数工作得很好。但是,我想从POST请求中获得此数据。假设我像这样发送请求:

代码语言:javascript
代码运行次数:0
运行
复制
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()

我希望在视图中显示的内容如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
 if request.method == 'POST':
     data = ?????? # Something that will return me my dictionary

以防万一:它将始终是JSON格式,字段是未知的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 03:12:05

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

将从字典中返回单个值(key=data)。如果您想要整个字典,只需使用request.POST。这里使用的是QueryDict类:

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

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

-Django Docs

票数 6
EN

Stack Overflow用户

发布于 2013-07-03 03:40:38

如果发布的数据是JSON格式,则需要对其进行反序列化:

代码语言:javascript
代码运行次数:0
运行
复制
import simplejson
myDict = simplejson.loads(request.POST.get('data'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17433833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档