首页 > 解决方案 > 如何在 Jinja 模板中显示枚举成员的值?

问题描述

我的models.py中有这个类。

class Size(Enum):
    ONE = 1
    TWO = 2

在我的表单中,我希望为该字段预定义选项,这就是我使用 Enum 类的原因:

size = SelectField('Shoe size', choices=[(name, member.value) for name, member in ShoeSize.__members__.items()])

存储在数据库中的值为ONE,TWO等。在Jinja模板中显示时{{ shoe.size }},成员名称就是显示的内容。如何在我的 jinja 模板中显示成员值?

简而言之,我想要1显示而不是ONE. 类的repr函数会更好。

标签: pythonflaskenumsjinja2

解决方案


您可以教您的模板关于您的课程:

from enum import Enum
from jinja2 import Template

class Size(Enum):
  ONE = 1
  TWO = 2

template = Template('{{ Size[db_value].value }} == {{ db_value }}')
template.globals['Size'] = Size

template.render(db_value='ONE')

编辑:有人将此标记为我不理解的重复项,因为链接的答案没有回答 jinja2 模板问题


推荐阅读