[英]Jinja2 check if value exists in list of dictionaries
我正在嘗試檢查包含字典的列表中是否存在值。 我使用燒瓶1.0.2。 請參見下面的示例:
person_list_dict = [
{
"name": "John Doe",
"email": "johndoe@mydomain.com",
"rol": "admin"
},
{
"name": "John Smith",
"email": "johnsmith@mydomain.com",
"rol": "user"
}
]
我找到了兩種方法可以解決此問題,您能告訴我哪個更好嗎?:
<pre>{% if "admin" in person_list_dict|map(attribute="rol") %}YES{% else %}NOPE{% endif %}</pre>
# return YES (john doe) and NOPE (john smith)
燒瓶代碼:
@app.template_filter("is_in_list_dict")
def is_any(search="", list_dict=None, dict_key=""):
if any(search in element[dict_key] for element in list_dict):
return True
return False
模板代碼:
<pre>{% if "admin"|is_in_list_dict(person_list_dict, "rol") %} YES {% else %} NOPE {% endif %}</pre>
# return YES (john doe) and NOPE (john smith)
謝謝 :-)。
如果可能的話,在將其添加到Jinja中之前,我會將此邏輯移至腳本的python部分。 因為,正如Jinja文檔中所述:“毫無疑問,您應該嘗試從模板中刪除盡可能多的邏輯。”
與其他兩個選項相比, any([person['role'] == 'admin' for person in person_dict_list])
乍一看要容易得多。
如果這不是一個選擇,那么我可能會使用第一個內置函數,因為我認為它作為自己的解決方案在邊緣情況下不太容易出錯,並且代碼減少了約6倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.