目標:{% for loop %}
在列表(使用Jinja2
),然後在使用引導一個HTML
表打印出來的結果{{print}}
。
問題:列表不打印在模板中。
For循環從數據庫中使用Jinja2的模板
在view_config
,我以前query
.all()
返回所有assessment_results
對象的列表。他們正在返回......我通過終端/打印調試確認了這一點。但是,for loop
未返回填充表所需的值;作爲read in Jinja2 tutorial。我不認爲我需要在view_config
中使用for loop
,因爲我已經看到其他人做了(see here),但我對此並不熟悉,並且試圖弄清楚這兩個程序(SQLALCHEMY
和Jinja2
)是如何相互作用的。
使用上述.all()
之後從打印輸出的一個例子:
[<Assessment_Result(owner='<User(username ='baseball', firstname ='Jen', lastname ='See', email='[email protected]')>', assessment='<Assessment(name='Becoming a Leader', text='better decisions')>')>]
view_config代碼:
views.py
@view_config(route_name='assessment_results', request_method='GET', renderer='templates/assessment_results.jinja2')
def all_assessment_results(request):
with transaction.manager: # < --- THIS WAS THE ISSUE !
assessment_results = api.retrieve_assessment_results()
if not assessment_results:
raise HTTPNotFound()
return {'assessment_results': assessment_results}
使用自舉通訊Jinja2的模板:
assessment_results.jinja2
<div class="container">
<table class="table table-hover">
<thead>
<tr>
<td> Assessment ID </td>
<td> Assessment </td>
<td> Owner </td>
</tr>
</thead>
<tbody>
<tr>
{% for x in assessment_results %}
<td>{{ x.assessments|e }}</td>
<td>{{ x.owners|e}}</td>
{% else %}
<td><em>no users found</em></td>
{% endfor %}
</tr>
</tbody>
</table>
</div>
是的,我有一個列表正在返回。我嘗試了'{%for key,value in assessment_results.iteritems%}',但這似乎也不起作用。我擺脫了'for-else' – thesayhey
你會建議使用什麼,因爲它是一個'list',我試圖'循環'所有結果並將它們打印到模板上。 'for-else'確實在忍者裏工作,但我沒有使用它。 – thesayhey
您確定'assessment_results'包含列表中的所有對象嗎?如果你想看到值被傳遞到那裏,你可以在Jinja中使用[pprint filter](http://jinja.pocoo.org/docs/dev/templates/#pprint)。請注意''list'沒有'iteritems',你應該使用'value for values' – adarsh