Flask-登录 | TypeError:需要支持缓冲区 API 的对象
Posted
技术标签:
【中文标题】Flask-登录 | TypeError:需要支持缓冲区 API 的对象【英文标题】:Flask-Login | TypeError: object supporting the buffer API required 【发布时间】:2019-05-25 20:15:34 【问题描述】:我正在尝试使用 Flask-Login 模块创建登录和注册页面。 应用程序能够将用户详细信息添加到数据库(sqlite)并散列密码,但无法正确登录用户。
出现的错误是:“TypeError: object support the buffer API required”
提到的错误似乎与我代码中的“check_password_hash”方法有关。
请找到我的一段代码:
a) 注册
@app.route('/register', methods=['POST', 'GET'])
def register():
form = RegisterForm()
if form.validate_on_submit():
hashed_password = generate_password_hash(form.password.data, method='sha256')
new_user = User(username=form.username.data, password=hashed_password, email=form.email.data)
db.create_all()
db.session.add(new_user)
db.session.commit()
return render_template('register_ok.html', form=form)
return render_template('register.html', form=form)
b) 登录(不起作用)
@app.route('/login', methods=['POST', 'GET'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user:
if check_password_hash(user.password, form.password):
login_user(user, remember=form.remember.data)
return redirect(url_for('dashboard'))
return render_template('err_login.html')
return render_template('login.html', form=form)
您能否建议可能的解决方法?
提前谢谢你!
【问题讨论】:
【参考方案1】:错误涉及 werkzeug.security 模块而不是 flask_login。 我已经通过添加 user_loader 解决了这个问题:
@login_manager.user_loader
def load_user(user_id):
return User.query.get(user_id)
干杯!
【讨论】:
以上是关于Flask-登录 | TypeError:需要支持缓冲区 API 的对象的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:支持flask api中所需的缓冲区API的对象
FLASK报错,TypeError,需要valid response
flask-jwt-extended TypeError:“函数”类型的对象不是 JSON 可序列化的
TypeError:在字符串格式化python Flask期间并非所有参数都转换了[重复]
TypeError:使用 Flask-JWT 时需要字符串或字节格式的密钥
TypeError:使用flask_jwt_extended int RESTful API时类型函数的对象不是JSON可序列化的