2017-03-29 42 views
1

我试图从传递给网络作为字典的Jinja2通过字典循环用在什么按键控制:值用来

app.py数据在HTML创建一个表:

client = boto3.client('ec2') 
vpc_ids = client.describe_vpcs() 
for i in vpc_ids.get('Vpcs'): 
    for tag in i.get('Tags'): 
     if tag.get('Key') == 'Name': 
      vpc_list[i.get('VpcId')] = {'CidrBlock': i.get('CidrBlock'), 
      'Name': tag.get('Value')} 
return vpc_list 

这returnes字典是这样的:

vpc_list = {'vpc-1': {'CidrBlock': 'x.x.x.x/16', 'Name': 'a-vpc'}, 
      'vpc-2': {'CidrBlock': 'y.y.y.y/16', 'Name': 'b-vpc'}, 
      'vpc-3': {'CidrBlock': 'z.z.z.z/16', 'Name': 'c-vpc'}, 
      'vpc-4': {'CidrBlock': 'q.q.q.q/16', 'Name': 'd-vpc'}} 

我的HTML看起来像这样:

<div class="container"> 
{% if vpc_lists is defined %} 
{% for vpc, data in vpc_lists.items() %} 
<div class="row"> 
    <div class="col-md-1"> 
     <i class="fa fa-camera-retro fa-lg"></i> 
    </div> 
    <div class="col-md-3"> 
     {{vpc}} 
    </div> 
    {% for key,value in data.items() %} 
    <div class="col-md-3"> 
     {{value}} 
    </div> 
    {% endfor %} 
    <div class="col-md-2"> 
     <a href="/vpc/{{vpc}}">Link</a> 
    </div> 
</div> 
{% endfor %} 
{% endif %} 

上面的工作...善良,但我想更好地控制如何以及在哪里我可以使用键值,所以而不是盲目循环这个我想能够获得基于关键的值,像

vpc.get('CidrBlock') or vpc['CidrBlock'] to get the x.x.x.x/16 value. 

不知道我是否说得够清楚。在这里我找不到这样的东西。

回答

0

Jinja支持字典访问语法,您可以使用{{data['CidrBlock']}}{{data['Name']}}来访问字典中的特定值。

+0

非常感谢!这比我想象的要容易得多! – mancuss