You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:25:03