flask获取post数据

客户端发送的是   content={json}类型的数据

服务器端

@app.route('/', methods = ['POST'])
def eventData():
    assert request.path == '/'
    assert request.method == 'POST'
    print request.values
    print request.form
    return 'request.json'
用request.json,request.data都不行

request.data Contains the incoming request data as string in case it came with amimetype Flask does not handle.
如果进入的请求数据是 Flask 不能处理的 mimetype ,数据将作为字符串存于此。也就是我这个是可以处理的

class flask.Request(environ, populate_request=True, shallow=False)
The request object used by default in Flask. Remembers the matched endpoint and view arguments.

It is what ends up as request. If you want to replace the request object used you can subclass this and set request_class to your subclass.

The request object is a Request subclass and provides all of the attributes Werkzeug defines plus a few Flask specific ones.

form
一个包含解析过的从 POST 或 PUT 请求发送的表单对象的 MultiDict 。请注意上传的文件不会在这里,而是在 files 属性中。

args
一个包含解析过的查询字符串( URL 中问号后的部分)内容的 MultiDict 。

values
一个包含 form 和 args 全部内容的 CombinedMultiDict 。

cookies
一个包含请求中传送的所有 cookie 内容的 dict 。

stream
如果表单提交的数据没有以已知的 mimetype 编码,为性能考虑,数据会不经修改存储在这个流中。大多数情况下,使用可以把数据提供为字符串的 data 是更好的方法。流只返回一次数据。

headers
进入请求的标头存为一个类似字典的对象。

data
如果进入的请求数据是 Flask 不能处理的 mimetype ,数据将作为字符串存于此。

files
一个包含 POST 和 PUT 请求中上传的文件的 MultiDict 。每个文件存储为 FileStorage 对象。其基本的行为类似你在 Python 中见到的标准文件对象,差异在于这个对象有一个 save() 方法可以把文件存储到文件系统上。

environ¶
底层的 WSGI 环境。

method
当前请求的 HTTP 方法 (POST , GET 等等)

path
script_root
url
base_url
url_root

获取的数据为

CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('content', u'{"appkey":"d0454485bc9b0f2756b8f03ef634fcc2","time":"2014-09-10 08:57:35","acc":"1","activity":".MainActivity","event_identifier":"btn_click","version":"1.0"}')])])
然后通过

data = request.form.getlist('content')
str = data[0]

就获取了string类型的一个dic

然后考虑将string转dic就可以了

string转dic的方法为

str = data[0]
b = eval(str)


b就是dic了

解决了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值