繁体   English   中英

访问 Django 模板中字典内的字典列表

[英]Access a list of dictionaries inside of a dictionary in Django templates

我试图访问我的 Django Html 模板中的一个列表,但我似乎无法通过索引抓取它以正常方式抓取列表的第一个元素。 在我看来,我有一个函数edamam ,它调用 API 端点并返回一个名为ingredients的 JSON 字典。

这是函数:

@login_required
def edamam(request):
    ingredients = {}
    if 'ingr' in request.GET:
        ingr = request.GET['ingr']
        app_key = APP_KEY
        app_id = APP_ID
        url = f'https://api.edamam.com/api/food-database/v2/parser?ingr={ingr}&app_id={app_id}&app_key={app_key}'
        response = requests.get(url)
        ingredients = response.json()
        print(f'Type: {type(ingredients)}')
        return render(request, 'todo/edamam.html', {'ingredients': ingredients})
    else:
        return render(request, 'todo/edamam.html', {'error': 'That item does not exist in the database.'})

我打印了typeof(ingredients)以确定我正在返回一个字典,并且打印输出确实在控制台中验证了这一点:

Type: <class 'dict'>

在我的edamam.html视图中,我正在获取ingredients.parsed edamam.html (成分只是一个庞大的字典),因为我试图获取名为parsed的列表以便从中获取元素。

<div class="col-md-5">
   {% if ingredients %}
   <p>{{ ingredients.parsed }}</p>
   {% endif %} {% endblock %}
</div>

返回:

[{'food': 

    {'foodId': 'food_bnxr4n3b1ld7i6ace2hkqbwm89du', 'label': 'cheeseburger', 'nutrients': {'ENERC_KCAL': 263.0, 'PROCNT': 12.97, 'FAT': 11.79, 'CHOCDF': 27.81, 'FIBTG': 1.1}
    , 'category': 'Generic foods', 'categoryLabel': 'food'}

}]

我的问题是,如何进入列表中的“食物”字典? 我尝试了ingredients.parsed.food (没有任何回报)并且还尝试了ingredients.parsed['food']并得到一个模板语法错误Could not parse the remainder: '['food']' from 'ingredients.parsed['food']'和最后的ingredients.parsed[0] .parsed ingredients.parsed[0]因为它是parsed列表中的第一个元素,但我得到另一个模板语法错误Could not parse the remainder: '[0]' from 'ingredients.parsed[0]' 所以最终我只是想获取food字典中的nutrients字典项目,这似乎是parsed字典的第一个元素。 我只是不确定如何获得food

这应该有效,

ingredients.parsed.0

尝试一下!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM