错误:类型对象没有属性'查询'

时间:2015-12-11 10:36:25

标签: python flask flask-sqlalchemy

我正在尝试使用Python + flask创建我的第一个网站,现在我正在尝试使用Flask-SQLAlchemy将数据添加到SQLite数据库。

这是我尝试将用户添加到数据库但它失败的部分:

@app.route('/register', methods=['GET','POST'])
def register():
    if request.method == 'GET':
        return render_template('registracija.html')
    elif request.method == 'POST':
        username = request.form['username']
        password = request.form['password']


        user = User.Query(filter_by=username)
        if user.count() == 0:
            user = User(username=username, password=password)
            db.session.add(user)
            db.session.commit()

            flash('You have registered the username {0}. Please login'.format(username))
            return redirect(url_for('login'))
        else:
            flash('The username {0} is already in use.  Please try a new username.'.format(username))
            return redirect(url_for('register'))
    else:
        abort(405)

我的register.html页面:

<form method="post" >
  <div class="col-md-4">
    Username: <br />
    Password: <br />
    Please repeat password: <br />
 </div>
 <div class="col-md-4">
   <input type="text" name="username" /> <br />
   <input type="password" name="password" />  <br />
   <input type="password" name="repeatpassword" /> <br /> <br />
   <input type="submit" name="register" value="Registruotis" />
</div>

</form>

当我填写表格并按下注册按钮时,我得到:

  

AttributeError:type object&#39; User&#39;没有属性&#39;查询&#39;

如果有人可以指出我做错了什么会很好。我在Windows 10上运行Python 3.5。

1 个答案:

答案 0 :(得分:1)

user = User.Query(filter_by=username) 

应该是

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

Python中的所有名称都区分大小写:变量名称,函数名称,类名称,模块名称,异常名称。如果你能得到它,设置它,调用它,构造它,导入它或者它,它是区分大小写的。因此,您收到的有关用户没有任何属性的错误&#39;查询&#39;当它确实有一个属性&#39;查询&#39;。