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

Django如何正确将Enum类传递至HTML模板并实现遍历使用

问题排查与修复方案

你遇到的渲染异常来自两处代码错误:

  • views.py 上下文传参存在语法错误:字典键status_options缺失前侧单引号,会直接导致参数无法正确注入模板上下文
  • Django 模板引擎无法直接对原生 Enum 类执行迭代操作,需要在视图层提前将枚举处理为可迭代的普通数据结构,避免模板层的变量解析兼容问题

修正 views.py 传参逻辑

修复语法错误,同时将枚举类转换为成员列表再传递到模板,代码如下:

from models import Status

# 其他业务逻辑代码...

# 将枚举转换为成员列表,模板可直接遍历
status_options = list(Status)
return render(request, 'orders.html', {'status_options': status_options})

模板代码无需调整

你写的 orders.html 遍历逻辑本身是正确的,参数传递正常后即可正常输出所有枚举项的名称,也可以同时输出枚举值:

{% for status in status_options %}
    <span>枚举名:{{ status.name }},枚举值:{{ status.value }}</span>
{% endfor %}

补充:如果直接传递原生 Enum 类到模板,需要在模板层遍历status_options.__members__.values才能拿到成员,这种写法会将Python类的内部属性暴露到模板层,提升后续维护成本,不推荐使用。


内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:21:44