您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – flask g.user和before_request

5b51 2022/1/14 8:20:19 python 字数 3028 阅读 443 来源 www.jb51.cc/python

我有一个简单的设置,使用如下所示的flask-login.当我点击before_request时,g.user设置正确.我也正确注册用户(因为他们使用正确的电子邮件/通行证打到数据库).我的问题是在before_request和页面命中之间,g.user总是变为None.我想我会错过会话,但我不知道是什么. 在里面: lm = LoginManager() lm.init_app(app) lm.

概述

在里面:

lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'

在view / login.py文件中,我有以下内容.

意见/ login.py:

@app.lm.user_loader
def load_user(id):
    return models.user.user_with_id(id)

@app.before_request
def before_request():
    g.user = current_user
    print 'current_user: %s,g.user: %s,leaving bef_req' % (current_user,g.user)

@app.route('/login',methods=['GET','POST'])
def login():
    print 'in login,g.user: %s' % g.user
    if g.user is not None and g.user.is_authenticated():
        return redirect(url_for('index'))
    enter_form = app.forms.EnterForm()
    if enter_form.validate_on_submit():
        session['remember_me'] = True
        return app.models.user.try_register(enter_form.email.data,enter_form.password.data)
    return render_template('index.html',enter_form=enter_form,profiles=[])

意见/ index.py:

@app.route('/','POST'])
@app.route('/index','POST'])
def index():
    print 'in index,g.user: %s' % g.user
    if not g.user:
        return redirect(url_for('login'))
    return render_template('index.html')

车型/ user.py:

def try_login(email,password,remember_me):
    u = user_with_email(email)
    if u and authenticate(u,password):
        login_user(u,remember=remember_me)
    return app.views.index.go_to_index()

def try_register(email,role=ROLE_USER):
    if not user_with_email(email):
        add_user(password,role=role,email=email)
    return try_login(email,password)

你还应该将remember_me放在try_register调用中.

最后在登录函数调用regsiter函数并在寄存器中调用try_login是很奇怪的.模式有点凌乱:)

总结

以上是编程之家为你收集整理的python – flask g.user和before_request全部内容,希望文章能够帮你解决python – flask g.user和before_request所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶