python - 使用 Flask 对 POST 表单请求进行错误请求
问题描述
我正在使用烧瓶制作登录系统,当我从 HTML 表单发布表单时,我不断收到以下错误:werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'username'
.
我在谷歌上查找了错误,但一无所获。
我的 HTML 代码是这样的:
<div class="card rounded-0" id="register_form">
<div class="card-header">
<h3 class="mb-0">Register</h3>
</div>
<div class="card-body">
<form class="form" role="form" method="POST" action="/auth/register" id="form">
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control form-control-lg rounded-0" id="email" required="">
<div class="invalid-feedback">Enter your Email.</div>
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control form-control-lg rounded-0" id="username" required="">
<div class="invalid-feedback">Enter your Username.</div>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control form-control-lg rounded-0" id="password" required="">
<div class="invalid-feedback">Enter your Password.</div>
</div>
<button type="submit" class="btn btn-success btn-lg float-right" id="btnLogin_regi">Register</button>
</form>
<p>Already have an account? </p><a class="btn btn-primary btn-lg" tabindex="-1" role="button" id="login_btn">Login</a>
</div>
</div>
我的 Python 代码是这样的:
@app.route('/auth/register', methods=["POST"])
def auth_post():
if request.method == "POST":
try:
q = database.query(User).filter(User.username == request.form.get("username"))
exists = database.query(q.exists()).scalar()
if exists:
return render_template("auth.html", error="User with same username/email exists.")
else:
username = str(request.form["username"])
password = str(request.form["password"])
email = str(request.form["email"])
print("Username: "+username+", Password: "+password+", Email: "+email)
temp = User(username=username, password=password, email=email)
database.add(temp)
database.commit()
except sqlalchemy.orm.exc.MultipleResultsFound:
return "Well this shouldn't be happening but it is. Join our Discord Server and tell one of the devs that the following error occured:\n<code>sqlalchemy.orm.exc.MultipleResultsFound (register)</code>"
我希望它将数据推送到 SQLite 数据库,一旦这样做,我将在此之后添加更多功能。
解决方案
问题是我没有添加name=
到输入字段。
谢谢@SuperShoot。
推荐阅读
- oracle-apex - 如何获取复选框组中复选框的显示值?
- java - 如何验证响应并从 Rest Assured 中的响应正文中提取值?
- jquery - 尝试创建一个网页,其中将显示 10 个输入字段(从数据库预填充),如果我编辑其中任何一个,它将更改数据库中的值
- postgresql - 如何在数据集中获取关系(家庭亲属)?
- python - AttributeError:类型对象'h5py.h5.H5PYConfig'没有属性'__reduce_cython__',同时使用Tensorflow对象检测API
- database - 在我的 Visual Studio 2019 中,基于服务的数据库不可用
- python - 通过 Pyinstaller 生成的 Python 到 EXE 不能为基于 kivy 的 python 运行
- python - 使用 selenium 和 chromedriver 无法在 Heroku 上加载 Instagram 登录页面
- windows - Alt + tab 快捷方式跳过 youtube 全屏模式窗口
- networking - 尝试在端口 22 上连接 user@host 时出现 ETIMEDOUT 错误