在一個小程序中寫了一個登錄視圖函數,代碼如下:
@app.route('/login',methods = ['GET','POST']) @oid.loginhandler def login(): if g.user is not None and g.user.is_authenticated: return redirect(url_for('index')) form = LoginForm() if form.validate_on_submit(): session['remember_me'] = form.remember_me.data return oid.try_login(form.openid.data,ask_for=['nickname','email']) return render_template('login.html', title = 'Sign In', form = form, providers = app.config['OPENID_PROVIDERS'])
但是在登錄測試的時候報錯,報錯信息:AttributeError: '_AppCtxGlobals' object has no attribute 'user'
經過反復檢查,發現是在運行登錄視圖函數的時候沒有確定g的位置,需要添加一個裝飾函數
@app.before_request def before_request(): g.user = current_user
記得在你的模塊開頭導入 current_user
希望幫助到那些被同樣問題困擾的人。。。