注册模板上下文函数出错


#1

错误图:好像是函数传参的类型出错 但是找不到哪里错了
AE4B911847BB1D9EB9877A45822EAE4B

注册模板上下文的函数

# 注册模板上下文处理函数
def register_templates_context(app):
    @app.context_processor
    def templates_globals():
        categories = Category.query.order_by(Category.name).all()
        return dict(categories=categories)

模板部分代码

    {% if categories %}
    <div class="fenlei">
      <h2>分类</h2>
      <ul>
          {% for category in categories %}
              <li><a href="/">{{ category.name }}({{ category.posts|length }})</a></li>
          {% endfor %}
      </ul>
    </div>
    {% endif %}``

#2

补充一下:我在注册模板上下文函数里的categories查询上面加了一个print语句测试,可以输出,但是categories这个查询语句执行不了,数据库里有11个分类,一个是Default, 10个是中文的

模板那里可以确定没有错误,我删了也会出错。应该是数据库 和这个查询语句有问题
下面是categories数据库模型

class Category(db.Model):
    __tablename = "category"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(100),nullable=False,unique=True)
    posts = db.relationship("Post",back_populates="category")

#3

再补充一下:查询其他数据,post admin 也都是这个错误…

这个是category数据库
image


#4

你错误信息给的内容太少了,顺着错误提示找不合法的参数在哪一行


#5

用命令行执行flask run 正常运行
用pycharm就会出错