我有一個非常簡單的使用Flask的python程序,如下所示。它通過彈出和註銷來處理登錄。問題在於瀏覽器中的url不會被重定向(url_for())調用更新。在瀏覽器中的網址未通過重定向(url_for('xxx'))在jQuery移動版中調用後更新
@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'))
當訪問'/'時顯示歡迎頁面。當我點擊按鈕時,會顯示登錄彈出窗口,其表單操作將重定向到「/ login」。這工作和login()函數被調用並執行。重定向也是如此,但瀏覽器不會更新顯示的網址。
所以webapp頁面顯示爲/ logon url。當我點擊重新加載時,我得到一個錯誤,因爲它試圖重新加載/登錄,而它應該重新加載'/'它已被重定向。
/logout也是如此。當顯示Web應用程序頁面並單擊註銷按鈕時,會加載執行logout()函數並重定向到索引的/ logout頁面。但該網址留下注銷。
如果我然後重新加載頁面,它會成功,因爲/註銷接受GET方法,然後URL更新爲/因爲它應該在第一個地方。
我有一個印象,這是一個jQuery手機的問題,但無法找出問題。從python和Flask的角度來看,它匹配我能找到的所有登錄示例。
就是這樣 - 只是挖掘一些舊的代碼我試圖找到它爲雅... :)哦! –