在Django Jinja2模板中无法映射字典键值的技术求助
在Django Jinja2模板中实现数字优先级到文本的映射
方法一:修改视图中的优先级字典(推荐)
将视图里的Pri字典键改为数字类型,与maji.u_priority的数字类型匹配:
Pri = { 1: "P1", 2: "P2", 3: "P3", 0: "Code Red" }
然后在模板中先循环遍历maji列表(接口返回的result是列表结构),再通过字典映射值:
{% for item in maji %} <tr> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_brandprodsvc_affected }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_technical_info|striptags }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_notification_status }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ priority[item.u_priority] }}</td> </tr> {% endfor %}
方法二:在模板中转换数字类型(无需修改视图)
如果不想改动视图字典,可在模板中把数字类型的u_priority转为字符串,匹配字典的字符串键:
{% for item in maji %} <tr> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_brandprodsvc_affected }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_technical_info|striptags }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ item.u_notification_status }}</td> <td style="border: 1px solid #ddd; padding: 8px;">{{ priority[item.u_priority|stringformat:"d"] }}</td> </tr> {% endfor %}
关键注意点
maji是列表类型,必须通过{% for %}循环遍历每个元素,不能直接访问maji.u_priority(这是访问列表的属性,而非列表内元素的属性)。- 视图已正确将
pri字典以priority为名传入模板上下文,无需额外调整。
内容的提问来源于stack exchange,提问作者Muks
相关产品推荐
相关产品推荐

