Ich verwende wsgi-request-logger https://github.com/pklaus/wsgi-request-logger in einem Kolben-Anwendung und müssen es auch die Anfrage Parameter (dh die Argumente, die mit der Anfrage gesendet werden).Drucken Sie oder senden Sie die Anfrage Argumente/Formulardaten
Mit request.form oder request.args nicht funktioniert und kehrt -
Runtime: Arbeiten außerhalb des Anforderungskontext.
val['params'] = url_decode(environ.get('QUERY_STRING', '')) print val['params']
Dies funktioniert nicht und gibt MultiDict ([]) (versuchte es in Middleware und die views.py Datei, gibt es die gleiche Sache für beide Fälle).
if environ['REQUEST_METHOD'] == 'POST':
print parse_form_data(environ)[1]
Das gibt MultiDict [zu].
Ich verstehe nicht, was ich hier vermisse. Hilfe wäre großartig.
Code, der die Middleware aufruft. Ich habe die Middleware ein wenig überarbeitet und den Namen der Datei in request_logger_wsgi geändert, um sie jetzt mit einem lokalen Klon zu testen.
#!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)
Hallo, danke für die Antwort. Ich habe mein OP bearbeitet und mehr Code hinzugefügt. Wenn mehr benötigt wird, werde ich das auch hinzufügen. –
Die Abfragezeichenfolge gibt mir keine Argumente im Falle von POST-Anfragen? –
Es gibt Ihnen keine Formulardaten, nein. Es können jedoch auch Abfragezeichenfolgen für eine POST-Anforderung ** zusätzlich bereitgestellt werden, um Daten zu bilden. Möchten Sie wirklich POST-Anfragen protokollieren? Sie können viele Daten enthalten und Sie müssen sich Sorgen um die Kodierung der Daten machen. Wenn ein Formular "multipart/form-data" verwendet, kann die POST-Anfrage beispielsweise Zeilenumbrüche enthalten. –