我是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 %}
答案 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引发的特定异常将更好地帮助我们了解问题的根本原因。希望这会有所帮助。