Python Flask如何在不呈现新页面的情况下仅为jinja返回一个变量?

Python Flask如何在不呈现新页面的情况下仅为jinja返回一个变量?,python,flask,jinja2,Python,Flask,Jinja2,我试图根据错误将变量“error”更新为html。当前变量已通过,但我必须呈现一个新模板,该模板刷新用户输入到表单中的输入,使他们重新启动表单。如何在不呈现新页面的情况下传递变量?这是我的密码。基本上,当用户从html输入提交表单时,它会获取用户输入,并检查现有的SQLite数据库中是否已经存在值。如果他们这样做了,那么它会将错误的字符串赋给error变量。在底部,如果数据库中至少存在一个值,则return render_template(register.html,error=error)将传

我试图根据错误将变量“error”更新为html。当前变量已通过,但我必须呈现一个新模板,该模板刷新用户输入到表单中的输入,使他们重新启动表单。如何在不呈现新页面的情况下传递变量?这是我的密码。基本上,当用户从html输入提交表单时,它会获取用户输入,并检查现有的SQLite数据库中是否已经存在值。如果他们这样做了,那么它会将错误的字符串赋给error变量。在底部,如果数据库中至少存在一个值,则
return render_template(register.html,error=error)
将传递到html中的更新错误。我只希望error元素在呈现新模板时更改或以某种方式保留用户输入。我该怎么做

@app.route("/register", methods=["GET","POST"])
def register():
    if request.method == "GET":
        return render_template("register.html")
    else: 
        username = request.form.get("username")
        email = request.form.get("email")
        password = request.form.get("password")
        password2 = request.form.get("password2")
        if password != password2:
            error = "Passwords do not match"
            return render_template("register.html", error=error)
        userCheck = c.execute("SELECT username FROM logins WHERE username = (?)", (username,)).fetchone()
        emailCheck = c.execute("SELECT email FROM logins WHERE email = (?)", (email,)).fetchone()
        passCheck = c.execute("SELECT password FROM logins WHERE password = (?)", (password,)).fetchone()
        if userCheck is None and emailCheck is None and passCheck is None:
            c.execute("INSERT INTO logins VALUES (null,?,?,?)", (username, email, password))
            conn.commit()
            return redirect("/")
        if userCheck is not None:
            error = "Username already taken"
        elif emailCheck is not None:
            error = "This email is already registered"
        elif passCheck is not None:
            error = "Password already taken"
    return render_template("register.html", error=error)

将用户名和电子邮件变量添加到render_模板

@app.route("/register", methods=["GET","POST"])
def register():
    if request.method == "GET":
        return render_template("register.html",username="", email="")
    else: 
        username = request.form.get("username")
        email = request.form.get("email")
        password = request.form.get("password")
        password2 = request.form.get("password2")
        if password != password2:
            error = "Passwords do not match"
            return render_template("register.html", error=error, username=username, email=email)
        userCheck = c.execute("SELECT username FROM logins WHERE username = (?)", (username,)).fetchone()
        emailCheck = c.execute("SELECT email FROM logins WHERE email = (?)", (email,)).fetchone()
        passCheck = c.execute("SELECT password FROM logins WHERE password = (?)", (password,)).fetchone()
        if userCheck is None and emailCheck is None and passCheck is None:
            c.execute("INSERT INTO logins VALUES (null,?,?,?)", (username, email, password))
            conn.commit()
            return redirect("/")
        if userCheck is not None:
            error = "Username already taken"
        elif emailCheck is not None:
            error = "This email is already registered"
        elif passCheck is not None:
            error = "Password already taken"
    return render_template("register.html", error=error, username=username, email=email)
然后更新你的html(和类似的电子邮件)


将用户名和电子邮件变量添加到渲染模板中

@app.route("/register", methods=["GET","POST"])
def register():
    if request.method == "GET":
        return render_template("register.html",username="", email="")
    else: 
        username = request.form.get("username")
        email = request.form.get("email")
        password = request.form.get("password")
        password2 = request.form.get("password2")
        if password != password2:
            error = "Passwords do not match"
            return render_template("register.html", error=error, username=username, email=email)
        userCheck = c.execute("SELECT username FROM logins WHERE username = (?)", (username,)).fetchone()
        emailCheck = c.execute("SELECT email FROM logins WHERE email = (?)", (email,)).fetchone()
        passCheck = c.execute("SELECT password FROM logins WHERE password = (?)", (password,)).fetchone()
        if userCheck is None and emailCheck is None and passCheck is None:
            c.execute("INSERT INTO logins VALUES (null,?,?,?)", (username, email, password))
            conn.commit()
            return redirect("/")
        if userCheck is not None:
            error = "Username already taken"
        elif emailCheck is not None:
            error = "This email is already registered"
        elif passCheck is not None:
            error = "Password already taken"
    return render_template("register.html", error=error, username=username, email=email)
然后更新你的html(和类似的电子邮件)