有没有办法将烧瓶中的请求打印为字符串以进行调试?我只想打印发布请求的所有参数,而不必为请求对象编写我自己的格式化程序。
问问题
7734 次
2 回答
12
您可以使用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)}
于 2014-10-01T10:44:41.497 回答
5
好吧,您可以将请求对象打印为 dict 并在那里查看信息,但我建议尝试Flask Debug Toolbar,查看所有请求数据等可能会有所帮助。此工具栏是 Django 调试工具栏的端口。
于 2012-12-27T07:12:16.647 回答