获取会话的查询结果

2024-03-29 12:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的表中,用户的角色类似于admin/client。https://imgur.com/Q53688B我想在html标记中显示它们的角色

app = Flask(__name__)
app.secret_key = "mysecretkey"
app.config["MYSQL_HOST"] = "localhost"
app.config["MYSQL_USER"] = "root"
app.config["MYSQL_PASSWORD"] = ""
app.config["MYSQL_DB"] = "blog"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"
mysql = MySQL(app)

class LoginForm(Form):
    username = StringField("Username:")
    password = PasswordField("Password:")


@app.route("/login", methods = ["GET", "POST"])
def login():
    form = LoginForm(request.form)

    if request.method == "POST":
        username = form.username.data
        password_entered = form.password.data

        cursor = mysql.connection.cursor()
        sorgu = "SELECT * FROM users WHERE username = %s AND role = %s"
        result = cursor.execute(sorgu, (username,role))

        if result > 0:
            data = cursor.fetchone()
            real_password = data["password"]

            role = cursor.fetchone()
            user_role = role["role"]



            if sha256_crypt.verify(password_entered, real_password):
                flash("successfully logged in", "success")

                session["logged_in"] = True
                session["username"] = username
                session["role"] = role



                return redirect(url_for("index"))

            else:
                flash("wrong password", "danger")
                return redirect(url_for("login"))

        else:
            flash("there is no user", "danger")
            return redirect(url_for("login"))

    return render_template("login.html", form=form)

我想在我的生活中扮演一个角色仪表板.html像这样

<small>Welcome {{session["username"]}}</small>
<small>Role: {{session["role"]}}</small>

当我尝试登录时,我得到的是:“UnboundLocalError:分配前引用的局部变量'role'”


Tags: formconfigapp角色datareturnsessionhtml
1条回答
网友
1楼 · 发布于 2024-03-29 12:23:57

在为变量赋值之前,请使用变量role

        sorgu = "SELECT * FROM users WHERE username = %s AND role = %s"
        result = cursor.execute(sorgu, (username,role))

我猜你想做的只是:

        sorgu = "SELECT * FROM users WHERE username = %s"
        result = cursor.execute(sorgu, (username,))

相关问题 更多 >