首页 > 解决方案 > 如何修复烧瓶登录记住我不工作

问题描述

html代码

<input type="checkbox" name="remember_me" checked class="custom-control-input" id="remember_me">
<label class="custom-control-label" for="remember_me">Remember me</label>

下面是路由功能

@app.route('/admin_login', methods=['POST', 'GET'])
def admin_login():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        remember_me = request.form['remember_me']


        admin = Admin.query.filter_by(username=username).first()
        if admin is None or not admin.check_password(password):
            flash('Invild password or username!')
            return redirect(url_for('admin_login'))

        

        login_user(admin, remember=remember_me)
        flash('Logged in successfully.')
        return redirect(url_for('index'))

    return render_template('login.html', title='Login')

如果我无法选中复选框,则会出现以下错误

我试图解决这个错误我需要帮助!!!

werkzeug.exceptions.BadRequestKeyError
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'remember_me'

标签: pythonflaskflask-sqlalchemyflask-wtformsflask-login

解决方案


当复选框未选中时,remember_me 的返回值为None. 要处理这个问题,而不是: remember_me = request.form['remember_me']

利用: remember_me = request.form.get('remember_me')


推荐阅读