我试图将对象传递给模板但其中没有显示任何内容。
from app.models import Datacenter
@app.route('/datacenter/<int:id>')
def datacenter(id):
datacenter = Datacener.query.filter_by(id=id)
return render_template('datacenter.html', datacenter=datacenter)
HTML
{% extends "base.html" %}
{% block content %}
<h1>{{ datacenter.name }}</h1>
{{ datacenter.name }}
<p>{{ datacenter.number }}</p>
<p>{{ datacenter.place }}</p>
<p>{{ datacenter.capacity }}</p>
<p>{{ datacenter.tier }}</p>
{% endblock %}
答案 0 :(得分:1)
这是因为您没有显示Datacenter
个实例,而是显示query
。在你的python代码中尝试print(datacenter)
,你会看到它打印一个SQL语句而不是SELECT ... FROM...
。
您应该在查询中添加.first()
,这样您就可以了。
datacenter = Datacenter.query.filter_by(id=id).first()
或者...
datacenter = Datacenter.query.get_or_404(id)
最后一个专门查找正确的ID,如果找不到所述数据中心,则会向用户显示404错误。