python - flask - 获取会话的查询结果
问题描述
在我的表中,用户具有管理员/客户等角色。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)
我想像这样在我的dashboard.html中显示角色;
<small>Welcome {{session["username"]}}</small>
<small>Role: {{session["role"]}}</small>
当我尝试登录时,这就是我得到的:“UnboundLocalError:分配前引用的局部变量'角色'”
解决方案
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,))
推荐阅读
- python - 如何使用 scipy 对图像进行卷积
- javascript - 使用 Cloud Functions 向所有用户发送 Firebase Cloud Message
- jquery - 只有一个额外的容器应该打开/ jquery
- node.js - 在开发模式下运行时电子自动更新程序错误
- machine-learning - 卷积神经网络在池化步骤之后如何进行?
- c++ - 调用另一个预处理器宏:MSVC 问题?
- java - 用 Double 取模来查找数字的数字有什么问题?
- python - 如何迭代数据框的行
- c - 我不明白如何编写这样的程序
- r - R 闪亮:RenderDataTable 和 RenderLeaflet