Flask对POST表单请求的错误请求

时间:2019-02-02 23:41:34

标签: python flask sqlalchemy

我正在使用flask创建登录系统,并且当我从HTML表单发布表单时,不断出现以下错误:werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'username'

我在Google上查找了错误,却一无所获。

我的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数据库,一旦完成,我将在此之后添加更多功能。

1 个答案:

答案 0 :(得分:0)

问题是我没有在输入字段中添加name=

感谢@SuperShoot。

相关问题