我正在創建一個基本應用程式來演示使用會話在 Flask 中的注冊和登錄活動。對于下面的代碼,字典中可用的每個用戶都應該能夠登錄。但是,該應用程式只接受名為“Mary”的第一個用戶的登錄。我不明白哪里出錯了。
from flask import Flask, app, session, render_template, request,redirect, url_for, jsonify
app = Flask(__name__)
app.config['SECRET_KEY'] = "Zd9TUg1aE03bHc28"
@app.route('/')
def load():
return render_template("authusers.html")
class Mydatabase:
appdb=[{'username':'Mary','password':'Password@123'},
{'username':'John','password':'Password@456'},
{'username':'Tara','password':'Password@789'}]
mydbusers=Mydatabase()
@app.route('/login',methods = ['GET','POST'])
def success():
if request.method == "POST":
username_val = request.form['user_id']
userpassword_val = request.form['user_password']
for authuser in Mydatabase.appdb:
for authpassword in authuser.values():
if authuser['username'] == username_val and authpassword['password'] == userpassword_val:
session['reg_user'] = username_val
return f'{session.get("reg_user")} have successfully logged into the application';
else:
return redirect(url_for('register'))
@app.route('/logout', methods=['GET','POST'])
def logout():
if 'reg_user' in session:
session.pop('reg_user',None)
return render_template("authusers.html")
@app.route('/register', methods=['GET','POST'])
def register():
return render_template('register.html')
@app.route('/reg_success',methods=['GET','POST'])
def reg_success():
newusercred={'username':request.form['user_id'], 'password':request.form['user_password']}
mydbusers.appdb.append(newusercred)
# return jsonify(Mydatabase.appdb)
return render_template("authusers.html")
if __name__=="__main__":
app.run(debug=True)
uj5u.com熱心網友回復:
我在你的代碼中看到了一些邏輯問題
像這樣嘗試->
class Mydatabase:
appdb=[{'username':'Mary','password':'Password@123'},
{'username':'John','password':'Password@456'},
{'username':'Tara','password':'Password@789'}]
username_val = 'Tara'
userpassword_val = 'Password@789'
d = [a for a in Mydatabase.appdb if a["username"] == username_val and a["password"]==userpassword_val]
if d:
print(f'have successfully logged into the application')
else:
print(f'Wrong credentials')
您的代碼中有一些不需要的回圈,即使在elseof 部分您也會回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361287.html
