@login-required不是重定向flasklogin

2024-03-29 15:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用flask login和postgreSQL。无论何时,我在任何def之前都需要decorator@login_,它不会重定向到特定的def。这里是我的代码:

初始化.py

app = Flask(__name__)
app.config.from_object('config')

db = SQLAlchemy(app)
lm = LoginManager()
lm.init_app(app)
lm.login_message = "Login please"
lm.login_view = "signin"
from app import views

我的模型:

^{pr2}$

我的观点是:

@lm.user_loader
def load_user(id):
  return User.query.get(int(id))

@app.route('/signin', methods=['GET', 'POST'])
def signin():
   form = LoginForm()

   if request.method == "POST":

     if current_user is not None and current_user.is_authenticated():
        return redirect(url_for('first'))

    user = User.query.filter(User.user_name == form.user_name.data, User.password == form.password.data).first()
    login_user(user, remember=True)
    session['signed'] = True
    session['username'] = user.user_name
    if session.get('next'):
        next_page = session.get('next')
        session.pop('next')
        return redirect(next_page)
    else:
        return redirect(url_for('first'))
 else:
    session['next'] = request.args.get('next')
    return render_template('log_in.html', form=form)

@app.route('/')
def first():
  return render_template("layout.html")

@app.route('/main')
@login_required
def main():
   return render_template("main.html")

所以从这里开始,每当我转到网址:本地主机:5000/主它显示了一个登录页面(如果我还没有登录),但是在登录之后,我在命令行中输入输入以形成以下内容:

127.0.0.1 - - [09/Mar/2015 00:37:39] "GET /signin?next=%2Fmain HTTP/1.1" 200 -
127.0.0.1 - - [09/Mar/2015 00:37:47] "POST /signin HTTP/1.1" 302 -
127.0.0.1 - - [09/Mar/2015 00:37:47] "GET /main HTTP/1.1" 302 -
127.0.0.1 - - [09/Mar/2015 00:37:47] "GET /signin?next=%2Fmain HTTP/1.1" 200 -

看起来在发出POST请求之后,它试图获取一个主def,但是系统不允许并再次返回登录页面。在


Tags: nameformappgetreturnsessiondeflogin
1条回答
网友
1楼 · 发布于 2024-03-29 15:59:29

我在玩游戏,认识到我需要把session['user_id']=表单.user.id为了使登录用户工作

相关问题 更多 >