我在燒瓶應用程序中使用wsgi-request-logger https://github.com/pklaus/wsgi-request-logger並需要它記錄請求參數(即與請求一起發送的參數)。打印或返回請求參數/表單數據
使用的Request.Form或request.args中不工作,回報 -
RuntimeError:請求上下文的工作之外。
val['params'] = url_decode(environ.get('QUERY_STRING', '')) print val['params']
這不起作用,並返回MultiDict([])(試圖在中間件和views.py文件,它會返回同樣的事,這兩種情況下)。
if environ['REQUEST_METHOD'] == 'POST':
print parse_form_data(environ)[1]
這返回MultiDict []太。
我沒有得到我在這裏失蹤的東西。幫助會很好。
調用中間件的代碼。我編輯了一下中間件,並將文件名改爲request_logger_wsgi,因爲我現在正在用本地克隆測試它。
#!flask/bin/python
from app import app
from request_logger_wsgi import WSGILogger, ApacheFormatters
from logging.handlers import TimedRotatingFileHandler
def application(environ, start_response):
response_body = 'The request method was %s' % environ['REQUEST_METHOD']
response_body = response_body.encode('utf-8')
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', str(len(response_body)))]
start_response('200 OK', response_headers)
print response_body, "231321"
return [response_body]
handlers = [ TimedRotatingFileHandler('access.log', 'd', 7) , ]
app.wsgi_app = WSGILogger(app.wsgi_app, handlers, ApacheFormatters.format_log)
app.run(debug=True)
嗨,謝謝你的回覆。我編輯了我的OP並添加了更多代碼。如果還需要更多,我也會添加。 –
查詢字符串在POST請求的情況下不會給我參數嗎? –
它不會給你表格數據,沒有。但是查詢字符串也可以提供給POST請求**,另外還有**來組成數據。你真的想記錄POST請求嗎?它們可能包含大量數據,您必須擔心數據的編碼。例如,如果表單使用'multipart/form-data',則POST請求可以包含換行符。 –