亲爱的Stack Overflow成员。首先感谢您阅读我的问题。我试图暗示烧瓶的filter_by()函数。我的问题是,当我尝试使用filter进行参数时,我得到了错误:
TypeError:filter_by()需要1个位置参数但是2个被赋予
我还附上了我的问题代码。请查看一下。
主要应用程序源代码:
def login():
error = None
form = LoginForm(request.form)
if request.method == 'POST':
user = User.query.filter_by(Email=request.form['email']).first()
password = User.query.filter_by(Password=request.form['password']).first()
group = User.query.filter_by(user).first()
if user is None or password is None :
session['logged_in'] = False
flash('Please write your username password')
else:
session['logged_in'] = True
flash('You were logged in')
if group=="viewer":
return redirect(url_for('viewer'))
elif group=="admin":
return redirect(url_for('admin'))
elif group=="employee":
return redirect(url_for('employee'))
return render_template('login.html', form=form)
我用于我的应用的模型:
class User(db.Model):
__tablename__ = 'users'
Id = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String(64), index=True, unique=True)
Email = db.Column(db.String(64), index=True, unique=True)
Password = db.Column(db.String(128), index=True )
Group = db.Column(db.String(30))
Tickets = db.relationship('Request', backref='author', lazy='dynamic')
登录页面源代码:
<div class="innter-form">
<form class="sa-innate-form" method="post">
{{ form.csrf_token }}
<label>Email Address</label>
<input type="text" name="email" value="{{ request.form.email }}">
<label>Password</label>
<input type="password" name="password" value="{{ request.form.password }}">
<button type="submit" value="submit">Sign In</button>
<a href="">Forgot Password?</a>
</form>
</div>
答案 0 :(得分:0)
filter_by用于列名
的查询...
# this returns a user object
user = User.query.filter_by(Email=request.form['email']).first()
# you should query based on the Id of User
group = User.query.filter_by(Id=user.Id).first()
答案 1 :(得分:0)
可能问题在于
group = User.query.filter_by(user).first()
除了filter_by
只接受关键字参数这一事实 - 并且你只提供了一个位置参数,我猜你应该在这里使用与User
不同的东西(也许是Group
,不确定,因为我不知道你定义了什么模型。
我提到的这行应该看起来像
group = Group.query.filter_by(user=user).first()
答案 2 :(得分:0)
谢谢大家的回复:
如上所述,恐怖组成部分:
group = User.query.filter_by(user).first()
而不是这个代码应该是:
group = User.query.filter_by(Email=user).first()