Redirect Flask/Werkzeug中的重定向未更改URL
我对pythonweb开发非常了解,所以请耐心听我说 我正在尝试使用Flask和以下代码设置一个非常基本的登录:Redirect Flask/Werkzeug中的重定向未更改URL,redirect,flask,werkzeug,Redirect,Flask,Werkzeug,我对pythonweb开发非常了解,所以请耐心听我说 我正在尝试使用Flask和以下代码设置一个非常基本的登录: @app.route('/') def index(): if verifyLoggedIn(): someData = gatherSomeData() return render_template('main.html', data=someData) else:
@app.route('/')
def index():
if verifyLoggedIn():
someData = gatherSomeData()
return render_template('main.html', data=someData)
else:
return redirect(url_for('login'))
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
if request.form['usr'] == user and request.form['pwd'] == password:
session['user'] = request.form['usr']
session['passwd'] = request.form['pwd']
return redirect(url_for('index'))
else:
return render_template('out.html',name=request.form['usr'])
else:
return render_template('login.html')
当我通过转到“localhost:5000/”访问页面时,我正确地被转发到
'本地主机:5000/login/'。然而,在我登录之后,页面会加载“main.html”,但url栏仍然显示“localhost:5000/login/”。问题是,如果我点击刷新按钮获取“someData”的新值,我最终会回到登录屏幕。我发现任何事后行动都是如此。我是否遗漏了一些非常基本的信息?您应该检查用户是否通过了“登录”路径的身份验证。如果是这样,请使用返回重定向(url\u表示('index'))重定向到“索引”路由 以下代码适用于我,基本上与您所做的相同:
from flask import Flask, request, render_template, session, redirect, url_for
app = Flask(__name__)
app.config['SECRET_KEY'] = 'sldkf'
@app.route('/')
def index():
if session['user']:
return render_template('main.html')
else:
return redirect(url_for('login'))
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
user = 'test'
password = 'test'
if request.form['usr'] == user and request.form['pwd'] == password:
session['user'] = request.form['usr']
session['passwd'] = request.form['pwd']
return redirect(url_for('index'))
else:
return render_template('login.html')
else:
return render_template('login.html')
@app.route('/logout/', methods=['GET'])
def logout():
session['user'] = None
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
感谢那些回复的人,但经过更多的搜索,我终于发现答案已经在stackoverflow:p上了(对不起,在问之前我确实到处看了很多)
这个问题实际上是由jquery mobile和我缺少数据url属性引起的 您是否为您的应用程序设置了一个秘密(没有它们,Flask的会话将无法工作)?