我刚开始使用python和flask :)
我下面的烧瓶应用程序包含字典,我试图根据条件从数组中查询。例如:如果名称与john匹配,则显示他的displayName。
app.py:
from flask import Flask, render_template, Response, request, send_from_directory
from flask import request
import subprocess
import json
import shlex
import socket
import time
app = Flask(__name__)
actors = {
"actorname":[
{
"displayName": "john wick",
"name": "john"
},
{
"displayName": "george clooney",
"name": "george"
},
{
"displayName": "brad pitt",
"name": "brad"
}
]
}
@app.route('/actors')
def theactors():
return render_template('actors.html', actors=actors)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000, debug=True)
在我的actors.html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> Holywood actors </title>
</head>
<body>
<h1> the display name for the actor {{actors.actorname[0].name}} is {{actors.actorname[0].displayName}}</h1>
</body>
</html>
因此,我不想添加位置0“ actors.actorname [0] .displayName”,而是要添加条件以在数组中搜索所有name = john并显示displayName。
答案 0 :(得分:0)
使用Python的过滤器功能,可以达到所需的效果。例如,请参见以下代码:
list(filter(lambda x:x['name']=='john',actors["actorname"]))
答案 1 :(得分:0)
非常简单。将您的app.py修改为:
@app.route('/actors')
def theactors():
data = list(filter(lambda
x:x['name']=='john',actors["actorname"]))
return render_template('actors.html', actors=data)
然后,您的模板文件应类似于:
{{ actors }}