如何根据烧瓶中的条件查询字典

时间:2019-08-31 15:54:56

标签: python python-3.x flask jinja2

我刚开始使用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。

2 个答案:

答案 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 }}