我用米格尔·格林伯格的优秀教程创建了一个Flask项目。我正在修改示例代码以创建自己的站点。你知道吗
我的数据库里有两张桌子。司机和车队。我已经建立了一对多的关系型号.py我想输出一个车手和他们所属车队的列表。我已经包括了路线.py以及显示结果的html文件。你知道吗
中的查询路线.py如果我在查询中指定了一个驱动程序,则可以正常工作,但是当我尝试驱动程序.query.all(),它不返回网页上的任何数据。你知道吗
注意=我在Python Shell中运行了
^{pr1}$,得到了正确的响应,只有在尝试在web页面上实现解决方案时,我才会遇到问题。Python Shell的输出
>>> details = Driver.query.all()
>>> details
[<Driver Lewis Hamilton>, <Driver Kimi Raikkonen>, <Driver Max Verstappen>]
>>> for d in details:
... print(d.driverName, d.driverTeam)
...
Lewis Hamilton Mercedes
Kimi Raikkonen Ferrari
Max Verstappen Red Bull
>>>
你知道吗型号.py你知道吗
class Team(db.Model):
id = db.Column(db.Integer, primary_key=True)
teamName = db.Column(db.String(64))
teamDriver = db.relationship('Driver', backref='driverTeam', lazy='dynamic')
def __repr__(self):
return '{}'.format(self.teamName)
class Driver(db.Model):
id = db.Column(db.Integer, primary_key=True)
driverName = db.Column(db.String(64))
team_id = db.Column(db.Integer, db.ForeignKey('team.id'))
def __repr__(self):
return '<Driver {}>'.format(self.driverName)
你知道吗路线.py你知道吗
@app.route('/driverDetails', methods=['GET', 'POST'])
def driverDetails():
## Output works fine with one driver specified in query
# details = Driver.query.filter_by(driverName='Kimi Raikkonen').first()
## No data is output when using query below
details = Driver.query.all()
return render_template('driverDetails.html', title='Driver Details', details=details)
你知道吗驱动程序详细信息.html你知道吗
{% extends "base.html" %}
{% block content %}
<h1>Driver Details</h1>
<!-- Output works correctly for one driver as specified in query on routes.py
<div><p>{{ details.driverName }} is in: <b>{{ details.driverTeam }}</b></p></div>
-->
<!-- However, when trying to iterate over whole list of drivers, output shows
the text "drives for:". But there is no data being populated from the db
-->
{% for d in details %}
<div><p>{{ details.driverName }} drives for: {{ details.driverTeam }}</p></div>
{% endfor %}
{% endblock %}
如果你能告诉我哪里出了问题,我将不胜感激。你知道吗
您的代码基本上是正确的,您只需要实际使用绑定到
d
的对象:相关问题 更多 >
编程相关推荐