Python 成功登录返回路由:/NONE

Python 成功登录返回路由:/NONE,python,flask,login,Python,Flask,Login,此flask应用程序正确地提示输入用户名和密码-但根据日志文件,尽管存在此问题,仍返回路由/无,会话似乎有效,并且可以访问其他@login_所需的路由。任何关于正在发生的事情的想法都将不胜感激 登录模板:Login.html {% extends "bootstrap/base.html" %} {% block content %} <div class="container"> <div class="row"> <form class="form-si

此flask应用程序正确地提示输入用户名和密码-但根据日志文件,尽管存在此问题,仍返回路由/无,会话似乎有效,并且可以访问其他@login_所需的路由。任何关于正在发生的事情的想法都将不胜感激

登录模板:Login.html

{% extends "bootstrap/base.html" %}
{% block content %}
<div class="container">
<div class="row">
    <form class="form-signin" action="/logmein" method="POST">
        <h2 class="form-signin-heading"> PCBevo Login</h2>
        <div class="col-2">
            <label for="username" class="sr-only">Username</label>
            <input type="text" id="username" class="form-control" placeholder="username" name="username" required autofocus>
        </div>
        <div class="col-3">
            <label for="inputPassword" class="sr-only">Password</label>
            <input type="password" id="inputPassword" class="form-control" placeholder="password" name="password" required>
        </div>
        <div class="col-4">
            <button class="btn btn-lg btn-primary btn-block" type="submit" value="Submit">Sign in</button>
        </div>
    </form>
</div>

</div> <!-- /container -->
{% endblock %}
登录管理器和问题路由的应用程序设置的选定属性:

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

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

@app.route('/login')
def login():
    session['next'] = request.args.get('next')
    return render_template('login.html')

@app.route('/logmein', methods=['POST'])
def logmein():
    username = request.form['username']
    password = request.form['password']
    user = User.query.filter_by(username=username).first()

    if not user:
        return '<h1>User not found!</h1>'

    stored_password = user.password
    if check_password_hash(stored_password, password):
       login_user(user)
        try:
            return redirect(session['next'])
        except KeyError:
            return '<h1>You are now logged in!</h1>'
    else:
       return '<h1>Wrong password!</h1>'
login\u manager=LoginManager()
登录管理器。初始化应用程序(应用程序)
login\u manager.login\u视图='login'
@登录\u manager.user\u加载程序
def加载用户(用户id):
返回User.query.get(int(User\u id))
@app.route(“/login”)
def login():
会话['next']=request.args.get('next')
返回呈现模板('login.html')
@app.route('/logmein',methods=['POST'])
def logmein():
用户名=请求。表单['username']
密码=请求。表单['password']
user=user.query.filter\u by(username=username).first()
如果不是用户:
返回“未找到用户!”
存储的\u密码=user.password
如果检查\u密码\u散列(存储的\u密码,密码):
登录用户(用户)
尝试:
返回重定向(会话['next'])
除KeyError外:
return“您现在已登录!”
其他:
返回“错误的密码!”

返回重定向(会话['next'])之前检查
会话['next']

如果您将运行
/login
而不是
/login?next=some\u url

因为
request.args.get('next')
将返回默认值
None

但您可以使用自己的默认值,即主页
“/”


在返回重定向(会话['next'])
之前,选中会话['next']。它可以是空的。特别是如果您将运行
/login
而不是
/login?next=some_url
@furas,则此提示启用了我正在寻找的乐趣。非常感谢。把这个作为答案,我会记下来
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

@app.route('/login')
def login():
    session['next'] = request.args.get('next')
    return render_template('login.html')

@app.route('/logmein', methods=['POST'])
def logmein():
    username = request.form['username']
    password = request.form['password']
    user = User.query.filter_by(username=username).first()

    if not user:
        return '<h1>User not found!</h1>'

    stored_password = user.password
    if check_password_hash(stored_password, password):
       login_user(user)
        try:
            return redirect(session['next'])
        except KeyError:
            return '<h1>You are now logged in!</h1>'
    else:
       return '<h1>Wrong password!</h1>'
request.args.get('next', "/" )