[英]python flask request.form 400 Bad Request
我flask有問題,有一個api,post方法,我只想通過request.form獲取表單數據...拋出一個400錯誤的請求。 我不知道導致此異常的形式是什么。
有誰知道是什么原因? 幫我
這是 python flask 應用程序的部分代碼和錯誤消息。
# python:2.7.5
# Werkzeug==0.14.1
from flask import Flask, request_started, request
def request_started_handler(sender, **extra):
request_form = str(request.form)
print(request_form)
app = Flask(__name__)
request_started.connect(request_started_handler, app)
@app.route('/upload')
def hello_world():
api_args = tuple(request.values.lists())
print(api_args)
return '<b>Hello World</b>'
if __name__ == "__main__":
app.run()
File "/data/myproject/app.py", line 50, in _debug_fucntion
request_form = str(request.form)
File "/data/lib/python2.7/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
File "/data/lib/python2.7/site-packages/werkzeug/utils.py", line 73, in __get__
value = self.func(obj)
File "/data/lib/python2.7/site-packages/werkzeug/wrappers.py", line 537, in form
self._load_form_data()
File "/data/lib/python2.7/site-packages/flask/wrappers.py", line 168, in _load_form_data
RequestBase._load_form_data(self)
File "/data/lib/python2.7/site-packages/werkzeug/wrappers.py", line 385, in _load_form_data
mimetype, content_length, options)
File "/data/lib/python2.7/site-packages/werkzeug/formparser.py", line 205, in parse
content_length, options)
File "/data/lib/python2.7/site-packages/werkzeug/formparser.py", line 114, in wrapper
exhaust()
File "/data/lib/python2.7/site-packages/werkzeug/wsgi.py", line 1289, in exhaust
self.read(chunk)
File "/data/lib/python2.7/site-packages/werkzeug/wsgi.py", line 1307, in read
return self.on_disconnect()
File "/data/lib/python2.7/site-packages/werkzeug/wsgi.py", line 1275, in on_disconnect
raise ClientDisconnected()
ClientDisconnected: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
我認為問題與
request.form
Flask 將在request.form['key']或 request.form 中不存在鍵值時引發 werkzeug.exceptions.BadRequestKeyError 異常。
我建議你使用
request.form.get("something", False)
為避免該錯誤,如果密鑰不存在,您將獲得 None 作為默認值。
也許表單標簽不包含:
enctype='multipart/form-data'
[編輯] Flask 為 POST 請求設置 request.data 或 request.form。 兩者都是字典。 對於作為表單嵌入在 POST 請求中的參數:
request_form_dict = request.form
for key in request_form_dict :
print ('form key is :'+request_form_dict[key])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.