我有一个由链接访问的服务的列表,我使用jinja中的for语句和flask提供的url\u for()函数来显示它们。
{% for service in services %}
<a href={{ url_for(service.service_url) }}>{{service.service_name}} </a>
{% endfor %}
正如@arsho在routes文件中声明的服务列表中所回答的那样,这可以正常工作 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()
服务类声明如下: 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))
使用 flask 外壳,我可以看到数据库中的内容:
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>` 返回内部服务器错误。
编辑:解决了这个问题,我在服务列表中的一个页面没有在routes文件中声明
1条答案
按热度按时间idfiyjo81#
如果要打印中变量的值,则不需要使用单引号
jinja
模板。从
flask.url_for
文档,url_for
接受方法名称作为参数。下面是一个示例,我们如何在
url_for
方法。app.py
: