【发布时间】:2018-01-31 10:52:01
【问题描述】:
我使用 Miguel Grinbergs 的优秀教程创建了一个 Flask 项目。我正在修改示例代码来制作我自己的网站。
我的数据库中有两个表。车手和车队。我在 models.py 中创建了一个一对多的关系,我想输出一个司机列表和他们所属的团队。我已经包含了 routes.py 和将显示结果的 html 文件。
如果我在查询中指定一个驱动程序,routes.py 中的查询可以正常工作,但是当我尝试 Drivers.query.all() 时,它不会在网页上返回任何数据。
注意 = 我已经运行了
Drivers.query.all() 在 Python Shell 中并且我得到了正确的响应,只有当我尝试在网页上实施解决方案时才会遇到问题。
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
>>>
models.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)
routes.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)
driverDetails.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 %}
我将不胜感激任何关于我哪里出错的建议。
【问题讨论】:
标签: python flask jinja2 flask-sqlalchemy