我有这样的查询:
session.query(System).filter_by(id_system = s.id_system).join(Command).filter_by(id_command=c.id_command).first()
我想在模板页面中进行此查询(我使用mako),但它不起作用:
% for c in s.commands:
code = session.query(System).filter....
% endfor
在页面中进行查询的最佳方法是什么?或者是不可能的?
答案 0 :(得分:0)
虽然可以通过将会话和其他所需功能注入模板上下文来实现,但这不是正确的做事方式。大多数情况下,数据应在模板外部处理,然后在渲染时传递给上下文。
为此模板调用render的视图/函数应该进行此查询并将其传递给模板。
答案 1 :(得分:0)
模板不适合进行此类操作。根据MVC(或RV作为金字塔)范例,所有业务逻辑都需要包含在控制器中。
在您的视图功能中进行查询:
results = DBSession.query(model.Articles).all()
return dict(status=True, results=results)
甚至更好地创建包含公共数据库操作的模块(然后导入函数并在视图函数中调用它)并通过
将结果返回给模板import your_project.lib.dbfunctions
results = dbfunctions.get_articles()
return dict(status=True, results=results)
而不是将它们用于模板:
<div>
% for r in results:
${r}
% endfor
</div>
我希望它会对你有所帮助。