2016-12-01 87 views
-1

親愛なるスタックオーバーフローのメンバー。まず、私の質問を読んでくれてありがとう。私はフラスコのfilter_by()関数を暗示しようとしています。私の問題は、議論のためにフィルターを使用しようとしているときに、私は次のエラーを受け取りました:filter_by()を使用しようとしたときにフラスコで "TypeError:filter_by()"エラーが返されました

TypeError: filter_by() takes 1 positional argument but 2 were given

私の質問にもコードが添付されています。それも見直してください。

メインアプリケーションのソースコード:

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

はいコード内に定義しました。エラーは、アクセスしようとしているときに発生します。私はリダイレクト部分にパスワードとユーザ名を入力すると意味します –

答えて

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() 
+0

'filter_by'メソッドがどのように定義されているか見るhttp://docs.sqlalchemy.org/en/latest/orm/query.html – mic4ael

+0

こんにちは。私は自分のモデルを編集しました。もう一度それを確認していただけますか?再度ありがとう –

+0

まだエラーがありますか? – metmirr

0

おそらく問題はfilter_byのみキーワード引数を受け入れているという事実のほかにライン

group = User.query.filter_by(user).first() 

である - そして、あなたがそれに唯一の位置引数を与え、私は(あなたがここUserよりも別の何かを使用する必要があります推測しています多分Group、私はあなたが定義したモデルが分からないので、わからない)。

私は

group = Group.query.filter_by(user=user).first() 
+0

しかし、唯一の問題は、フロントエンド側から渡す引数です。 –

0

のようになります言及した行は、レスポンスありがとうございました。また、これに代えて

group = User.query.filter_by(user).first() 

ERORは、上記に言及し、グループの一部にありましたコードは次のとおりです。

group = User.query.filter_by(Email=user).first() 
関連する問題