【问题标题】:Error: Type object has no attribute 'Query'错误:类型对象没有属性“查询”
【发布时间】:2015-12-14 12:24:37
【问题描述】:

我正在尝试使用 Python + 烧瓶创建我的第一个网站,现在在尝试使用 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:类型对象“用户”没有属性“查询”

如果有人能指出我做错了什么,那就太好了。我在 Windows 10 上运行 Python 3.5。

【问题讨论】:

  • 请在此处发布您的代码,而不是在粘贴箱上,并仅将其剪切到相关部分。

标签: python flask flask-sqlalchemy


【解决方案1】:
user = User.Query(filter_by=username) 

应该是

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

Python 中的所有名称都区分大小写:变量名、函数名、类名、模块名、异常名。如果你能得到它、设置它、调用它、构造它、导入它或提升它,它是区分大小写的。因此,当用户确实具有属性“查询”时,您会收到关于用户没有任何属性“查询”的错误。

【讨论】:

  • 太棒了!非常感谢!像魅力一样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2017-11-12
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多