烧瓶请求调试

问题描述 投票:5回答:2

有没有一种方法来打印在瓶的请求,作为调试用字符串?我只是想打印一个POST请求的所有PARAMS,而无需编写自己的格式化的请求对象。

python debugging flask tostring
2个回答
8
投票

您可以使用pprint模块。

打印请求对象本身不会表现出任何有用的信息,然而,你可能会想打印request.environ代替。

举个例子:

from flask import Flask, Response, request
import pprint

app = Flask(__name__)

@app.route("/test")
def test():
    str = pprint.pformat(request.environ, depth=5)
    return Response(str, mimetype="text/text")

app.run(debug=True)

产量:

{'CONTENT_LENGTH': '',
 'CONTENT_TYPE': '',
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8,es;q=0.6',
 'HTTP_CACHE_CONTROL': 'max-age=0',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': 'session=eyJsYXN0X2FwcGlkIjoiMiI',
 'HTTP_HOST': '127.0.0.1:5000',
 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36',
 'PATH_INFO': '/test',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_PORT': 36547,
 'REQUEST_METHOD': 'GET',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '127.0.0.1',
 'SERVER_PORT': '5000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'Werkzeug/0.9.4',
 'werkzeug.request': <Request 'http://127.0.0.1:5000/test' [GET]>,
 'werkzeug.server.shutdown': <function shutdown_server at 0x10cd1b8>,
 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f5211b911e0>,
 'wsgi.input': <socket._fileobject object at 0x1083f50>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': False,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}

5
投票

那么你可以打印请求对象作为一个字典,看到的信息,但我会建议尝试Flask Debug Toolbar,它可能是有益的看到所有的请求数据和更多。此工具栏是Django的调试工具栏上的端口。

© www.soinside.com 2019 - 2024. All rights reserved.