名称错误:名称';记录';未定义,请单击Python
我有一个使用frameworkflask的Python代码,它检查admin是否登录(logged=True)以呈现admin页面,如果admin没有登录(logged=False),则重定向到登录页面名称错误:名称';记录';未定义,请单击Python,python,variables,flask,Python,Variables,Flask,我有一个使用frameworkflask的Python代码,它检查admin是否登录(logged=True)以呈现admin页面,如果admin没有登录(logged=False),则重定向到登录页面 @app.route('/admin_login', methods=['POST', 'GET']) def admin_login(): if request.method == 'POST': login = request.form['login']
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if (login == 'admin') and (passsword == 'admin_pass'):
logged = True
return redirect('/admin_page'), logged
else:
return "Wrond login and passsword!"
else:
return render_template('admin_login.html')
@app.route('/admin_page')
def admin_page():
if logged == True:
return render_template('admin_page.html')
else:
return redirect('/admin_login')
但是如果logged==True:-
NameError:name“logged”未定义,则我在中得到一个错误。我试图使日志化
全局化,但没有效果。因此,如何定义已登录的并在函数管理页面中使用它?您应该避免在服务器上使用全局已登录变量。然后任何人都将被允许在成功登录后使用您的网站!您应该改用会话变量
会话数据存储在cookie之上并进行加密。对于这种加密,Flask应用程序需要定义的密钥。会话对象也是包含键值对的字典对象
如果尚未获得主脚本,请将其添加到主脚本顶部附近:
from flask import Flask, session, redirect, url_for, escape, request, flash
app = Flask(__name__)
app.secret_key = 'any random string’
然后更改函数admin\u login()
以设置会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
然后更改admin\u page()
函数以检查此会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
您还需要一个注销端点来弹出会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
应避免在服务器上登录全局变量。然后任何人都将被允许在成功登录后使用您的网站!您应该改用会话变量
会话数据存储在cookie之上并进行加密。对于这种加密,Flask应用程序需要定义的密钥。会话对象也是包含键值对的字典对象
如果尚未获得主脚本,请将其添加到主脚本顶部附近:
from flask import Flask, session, redirect, url_for, escape, request, flash
app = Flask(__name__)
app.secret_key = 'any random string’
然后更改函数admin\u login()
以设置会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
然后更改admin\u page()
函数以检查此会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
您还需要一个注销端点来弹出会话变量:
@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
if request.method == 'POST':
login = request.form['login']
passsword = request.form['password']
if not 'logged_in' in session:
if (login == 'admin') and (passsword == 'admin_pass'):
session['logged_in'] = True
return redirect(url_for("admin_page"))
else:
flash("Wrong login and passsword!")
return render_template('admin_login.html')
else:
return redirect(url_for("admin_page"))
else:
if "logged_in" in session:
return redirect(url_for("admin_page"))
return render_template("admin_login.html")
@app.route('/admin_page')
def admin_page():
if 'logged_in' in session:
return render_template('admin_page.html')
else:
return redirect(url_for('admin_login'))
@app.route('/logout')
def logout():
session.pop('logged_in', None)
return redirect(url_for('index'))
web服务器中的全局变量没有意义。如果你做到了这一点,那么如果有人以管理员身份登录,那么其他任何人都可以自由访问/admin_页面!我知道,我只是想知道如何在web服务器中使用返回的登录的其他funcA全局变量没有任何意义。如果你做到了这一点,那么如果有人以管理员身份登录,那么其他任何人都可以自由访问/admin_页面!我知道,我只是想知道如何使用返回的登录其他函数