python - flask_login.login_user 在将用户对象传递给它时给出错误
问题描述
我的代码不断显示:
TypeError: login_user() takes 0 positional arguments but 1 was given
但在烧瓶文档中,它清楚地接受一个对象作为其参数。
我的登录代码:
@app.route('/login',methods=['GET','POST'])
def login_user():
form = LoginForm()
if request.method=='POST':
attemptedUser=User.query.filter_by(uusername=form.username.data).first()
attemptedPassword=form.password.data
if attemptedUser and attemptedUser.comparePassword(attemptedPassword=form.password.data):
login_user(attemptedUser)
return redirect(url_for("index"))
else:
return "password not correct"
if request.method=='GET':
return render_template("login.html",form=form)
而且我也怀疑给它尝试用户 obj或与该尝试用户关联 的用户名是否会有所作为,或者它是否会起作用?
我的 Models.py 文件:
from market import db ,login_manager
from flask_login import UserMixin
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
class User(db.Model,UserMixin):
uid=db.Column(db.Integer(),primary_key=True)
uusername=db.Column(db.String(30),nullable=False,unique=True)
upassword =db.Column(db.String(30),nullable=False,unique=True)
uaddress= db.Column(db.String(30))
uphone=db.Column(db.Integer(),nullable=False,unique=True)
# def __repr__(self):
# return f'{self.uusername}'
@property
def password(self):
return self.password
def comparePassword(self,attemptedPassword):
return attemptedPassword==self.upassword
解决方案
假设您已导入login_user
上面未显示的代码,
def login_user():
正在掩盖它。当代码稍后执行时
login_user(attemptedUser)
它正在获取您的功能,而不是来自flask_login
. 重命名您的函数。
推荐阅读
- java - 创建一个元素 设置与创建单个元素列表相同的方式(如果适用)
- java - 文本未出现但存在,尝试制作一个计算平均值的简单应用程序
- angular - 使用@ViewChild 参考检查后表达式已更改
- xaml - 如何在 xamarin 表单中创建以下类型的自定义进度条
- android - 如何使用 Dagger2 注入我的 Retrofit DataService
- python - 使用 python 解决计划冲突
- c++ - 如果没有连接 HDMI 设备,不带 X 的 SDL2 会显示“分段错误”
- c# - 为什么我的 HTTP 编辑发布方法不起作用?
- javascript - 为什么 writeToDisk 选项会使我的开发构建挂起?
- javascript - 如何通过 ubuntu 中的 GUI 从用户那里获取孟加拉语输入?