错误的请求烧瓶

时间:2019-12-25 22:13:17

标签: flask

我是Flask的新手,我正在尝试构建自己的flask应用程序。我不知道是什么原因导致了此错误。

  

400错误的请求

     

浏览器(或代理)发送了该服务器无法理解的请求。   这是我的python代码:

@app.route('/upload1', methods=['POST'] )
def upload1():
    mysql.connection.autocommit(on=True)
    cur = mysql.connection.cursor()
    f = request.files['inputFile']
    r = pd.read_csv(f, sep=',')
    for it in r.iterrows():
       cur.execute('INSERT INTO users(user_name, pass, name, role_id) VALUES(%s, %s, %s, %s)', it[1])

    cur.close()
    flash('Import Success', 'success')
    return redirect(url_for('admin'))

admin.html

{% extends 'layout.html' %}

{% block body %}
    <h1>Admin <small>Welcome {{session.username}}</small></h1>
    <form action="/upload1" method="POST">
        <button name="upload1" type="submit">Upload</button>
    </form>


{% endblock %}

1 个答案:

答案 0 :(得分:1)

f = request.files['inputFile']

我不确定这是否是造成此问题的原因,但是您似乎正在尝试读取通过HTTP POST提交的文件,但是表单内容类型不正确。将enctype="multipart/form-data"作为属性添加到HTML表单。此外,您似乎缺少在表单内上载file的地方。

<form action="/upload1" method="POST">
<!-- Should become -->
<form action="/upload1" method="POST" enctype="multipart/form-data">
<!-- ...and add a file input... -->
<input type="file" name="inputFile"> <!-- note that the name attribute matches the existing python code -->

如果不包含此属性,则网络浏览器将默认为Content-Type为application/x-www-form-urlencoded,不允许文件上传。

启用Flask的调试模式是获取有关错误的详细信息的好方法。您可以通过修改app.run()语句以包括debug参数来做到这一点,例如:

app.run(debug=True)

在启用调试模式的情况下提供Flask引发的特定异常将更好地帮助我们了解问题的根本原因。希望这会有所帮助。