簡體   English   中英

python flask request.form 400 錯誤請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM