我尝试使用https://github.com/hack4impact/flask-base并尝试将sqlalchemy orm对象传递给jinja2模板。
我的房产模型是;
class Property(db.Model):
__tablename__ = 'properties'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(140))
body = db.Column(db.String(1400))
img = db.Column(db.String(140))
....
在我的main / views.py中,我有:
from flask import render_template
from app import db
from app.models import Property
from . import main
@main.route('/')
def index():
props = db.session.query(Property).all()
return render_template('main/index.html')
我知道要将变量传递给模板,您可以这样做:
return render_template('main/index.html', pr= props)
但是尝试:
>>> type(props[0])
<class 'app.models.property.Property'>
这似乎是错误的对象类型。我会假设你会传递一些更通用的东西,就像一个dicts列表。将sqlalchemy对象列表传递给jinja2模板的最佳方法是什么?
答案 0 :(得分:1)
Jinja2可以处理传递给模板渲染器的任何类型的Python对象,因为它是用Python编写的,特别是可以像这样工作。因此,如果您将props
列表传递给render_template
,它就可以正常使用。
您可以像正常一样访问对象方法和属性,甚至可以进行迭代:
{% for prop in pr %}
<p>Title: {{ prop.title }}</p>
<p>Body: {{ prop.body }}</p>
<img src="{{ prop.image }}" />
{% endfor %}