Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是Flask中的HTTP 400错误请求_Python_Flask_Werkzeug - Fatal编程技术网

Python 什么是Flask中的HTTP 400错误请求

Python 什么是Flask中的HTTP 400错误请求,python,flask,werkzeug,Python,Flask,Werkzeug,什么是Http 400错误请求?是什么导致它发生的 我可以使用什么方法来知道请求中的哪个键。表单[key]会导致错误的请求,以及如何防止它 已更新 正如杰拉德在评论中提到的: 当您通过http请求文件时会发生此错误 不存在 为了更清楚,这里是导致错误请求的示例代码: 你好.py # -*- coding: utf-8 -*- from flask import * import re app = Flask(__name__) @app.route('/', methods=['GET',

什么是Http 400错误请求?是什么导致它发生的

我可以使用什么方法来知道
请求中的哪个
。表单[key]
会导致错误的请求,以及如何防止它

已更新

正如杰拉德在评论中提到的:


当您通过http请求文件时会发生此错误 不存在

为了更清楚,这里是导致
错误请求的示例代码

你好.py

# -*- coding: utf-8 -*-
from flask import *
import re

app = Flask(__name__)


@app.route('/', methods=['GET','POST'])
def checkName():

    return render_template('hello.html')

@app.route('/hello',methods=['GET','POST'])
def printName():
    if request.method=='POST':
        username = request.form['username']
        bad_key = request.form['bad_key'] # this key is not exist
        
        return "Hello, ",username

if __name__ == '__main__':

    app.run(debug=True)
hello.html

<form class="form-horizontal" action='/hello' method='POST' name="frm_submit">
  <div class="form-group">
    <label for="username" class="col-sm-2 control-label">User Name:</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="username" name="username" placeholder="username">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Submit</button>
    </div>
  </div>
</form>

用户名:
提交
从上面的代码中,浏览器返回
错误请求-浏览器(或代理)发送了此服务器无法理解的请求。
但没有给出导致此错误的键的线索

因此,我可以使用哪种方法来了解导致此错误的
,以及如何防止它

谢谢。

Flask使用库的
MultiDict
数据结构保存POST数据

如果查看
MultiDict.\uuu getitem\uuu
的,可以看到如果找不到键,它将以键的名称作为参数引发
BadRequestKeyError
。因此,您可以检查异常的
args
属性以获取坏键的名称:

from werkzeug.exceptions import BadRequestKeyError

@app.route('/hello', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        username = request.form['username']
        try:
            bad_key = request.form['bad_key']
        except BadRequestKeyError as ex: 
            return 'Unknown key: "{}"'.format(ex.args[0]), 500 
请注意,虽然
BadRequestKeyError
s字符串表示为

400错误请求:浏览器(或代理)发送了此服务器无法理解的请求

响应的状态实际上是

500内部服务器错误


你想干什么?您正在使用什么库。。。请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。请参阅“如何请求”页面以获得帮助,以澄清此问题。@KaustubhKallianpur,我正在尝试了解python中
错误400错误请求的原因是什么?我怎样才能知道原因并防止这种情况发生?谢谢。当您通过http请求不存在的文件时,会发生此错误。它与python无关。@Gerard不是“404-未找到”吗?400指的是腐败request@lausek完全正确,我有点放屁了。通常发生在我身上