flask blueprint - 数据库调用给出Object没有属性' query'错误

时间:2018-03-12 18:02:05

标签: python database flask flask-sqlalchemy

我是flask Blueprints的新手,我收到错误AttributeError:' function'对象没有属性' query'。我很确定我错过了一些简单的事情。我相信我的错误来自views.py文件,并且没有访问该数据库,但我不确定原因。 '从项目导入db' 应该这样做。我想。

感谢您的帮助

这是代码。

app.py

from project import app
if __name__ == 'main__':
app.run(debug=True)

__初始化__。PY

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLALchemy

from project.ContentType.views import ContentType_BP
app.register_blueprint(ContentType_BP, url_prefix='/ContentType')

@app.route('/')
def index():
    return render_template('index.html')

views.py

from flask import Blueprint, render_template
from project.ContentType.forms import ContentTypeForm
from project.models import ContentType
from project import db

ContentType_BP = Blueprint('ContentType',__name__, 
                           template_folder = 'templates')

@ContentType_BP.route('/ContentType', methods=['GET','POST'])
def ContentType():
    form = ContentTypeForm()
    results = ContentType.query.all() ## this is were my error occurs 

    return render_template('contenttype/contenttype.html',
                            form=form, results=results)

Models.py

from project import db
class ContentType(db.Model):
id = db.Column(db.Integer, primary_key=True)
ct1 = db.Column(db.Integer)
ct2 = db.Column(db.Integer)

以下是目录树。我认为它可能会派上用场。 ' - '表示Main

的子目录
Main
  app.py
  __init__.py
  --project
     models.py
     --ContentType
       __init__.py
       --static
       --templates
         --ContentType
            contenttype.html

1 个答案:

答案 0 :(得分:0)

看起来您正在从db模型类中隐藏ContentType,因为您将它用作视图的名称。

尝试更改视图名称:

def ContentType():

类似于:

def content_type():

并改用该名称。