chm*_*ike 8 python flask jquery-mobile flask-login
我有一个非常简单的python程序,使用如下所示的Flask.它通过弹出和注销来处理登录.问题是浏览器中的URL不会被重定向(url_for())调用更新.
@app.route('/')
def index():
if not 'username' in session:
# contains a button showing a login popup form with action set to '/login'
return render_template('welcome.html')
else:
# contains a logout button with a href to '/logout'
return render_template('webapp.html')
@app.route('/login', methods=['POST'])
def login():
session['username'] = request.form['username']
return redirect(url_for('index'))
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
Run Code Online (Sandbox Code Playgroud)
访问"/"时,会显示欢迎页面.当我单击按钮时,将显示登录弹出窗口,其表单操作将重定向到"/ login".这样可以调用并执行login()函数.重定向也是如此,但浏览器不会更新显示的网址.
因此,webapp页面显示为/ logon url.当我单击重新加载时,我收到一个错误,因为它尝试重新加载/登录,而它应该重新加载'/'重定向.
/ logout也是如此.当显示webapp页面并单击注销按钮时,将加载/ logout页面,该页面执行logout()函数并重定向到index.但是网址要么退出了.
如果我然后重新加载页面,它会成功,因为/ logout接受GET方法然后将url更新为/它本来应该是第一个位置.
我的印象是它是一个jQuery移动问题,但无法找出问题所在.从python和Flask的角度来看,它匹配我能找到的所有登录示例.
最后在写完问题后解决了这个问题.
问题是由jQuery mobile和缺少的data-url属性引起的.
通过在页面div中添加data-url属性,浏览器中的url会更新,一切正常.
<div data-role="page" id="welcome" data-url="{{ url_for('index') }}">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |