【发布时间】:2020-09-30 23:58:30
【问题描述】:
我有一个通过链接访问的服务列表,我使用 Jinja 中的 for 语句和 flask 提供的 url_for() 函数显示它们。
{% for service in services %}
<a href={{ url_for(service.service_url) }}>{{service.service_name}} </a>
{% endfor %}
@arsho 用路由文件中声明的服务列表回答了这个问题
app.py:
services = [
{
"service_url": "first_page",
"service_name": "First Page Service"
},
{
"service_url": "second_page",
"service_name": "Second Page Service"
},
{
"service_url": "third_page",
"service_name": "Third Page Service"
}
]
就我而言,我使用以下语句恢复存储在 SQLite 数据库中的列表
services = Services.query.all()
Services 类声明如下:
models.py
class Services(db.Model):
id = db.Column(db.Integer, primary_key=True)
service_name = db.Column(db.String(32))
service_url = db.Column(db.String(32))
使用烧瓶外壳,我可以查看数据库中的内容:
>>>service = Services.query.all()
>>>for service in services:
... service.service_name
...
'First Page Service'
'Second Page Service'
'Third Page Service'
>>>for service in services:
... service.service_url
...
'first_page'
'second_page'
'third_page'
但在这种情况下,同一行 <a href={{ url_for(service.service_url) }}>{{service.service_name}} </a> 返回内部服务器错误。
编辑:解决了,我在服务列表中的一个页面没有在路由文件中声明
【问题讨论】:
标签: python sql sqlite flask jinja2