2017-03-29 49 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