flask获取post数据

来源:互联网 发布:emc测试设备 知乎 编辑:程序博客网 时间:2024/06/06 16:19

客户端发送的是   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了

解决了

0 0