Flask 烧瓶巴别塔转换烧瓶WTF选择字段

Flask 烧瓶巴别塔转换烧瓶WTF选择字段,flask,flask-wtforms,wtforms,flask-babel,Flask,Flask Wtforms,Wtforms,Flask Babel,我想用烧瓶巴别塔转换烧瓶WTF选择字段值 以下是我的代码片段: from flask_babel import _, lazy_gettext as _l class PaymentStatus(enum.Enum): REJECTED = 'REJECTED' COMPLETED = 'COMPLETED' EXPIRED = 'EXPIRED' def __str__(self): return self.value payment_st

我想用烧瓶巴别塔转换烧瓶WTF选择字段值

以下是我的代码片段:

from flask_babel import _, lazy_gettext as _l

class PaymentStatus(enum.Enum):
    REJECTED = 'REJECTED'
    COMPLETED = 'COMPLETED'
    EXPIRED = 'EXPIRED'

    def __str__(self):
        return self.value

payment_status = [(str(y), y) for y in (PaymentStatus)]

def course_list():
    return Course.query.all()

class PaymentForm(FlaskForm):
    course_name = QuerySelectField(_l('Course name'), validators=[required()], query_factory=course_list)
    status_of_payment = SelectField(_l('Payment Status'), choices=payment_status)
    # ...
    # ...
在这里,我想本地化SelectField
choices
值和QuerySelectField
query\u factory
值,使用Flask Babel


有可能吗?如果有,请提供任何示例或参考教程:)

选择字段
选项可以由
lazy\u gettext()处理

一些字符串文本通常在应用程序启动时在请求外部分配,因此在计算这些文本时,无法知道使用哪种语言

Flask Babel提供了一个名为
lazy\u gettext()
的惰性计算版本

对于
选项

来自flask\u babel import\u,lazy\u gettext as\u l
类别PaymentStatus(enum.enum):
已拒绝=_l(‘已拒绝’)
已完成=_l('已完成')
过期=_l(“过期”)
定义(自我):
回归自我价值

QuerySelectField
query\u factory
接受从数据库查询的值。这些值不应由Flask Babel/Babel处理。因为数据库在Python源代码之外存储数据

可能的解决办法:

  • 在数据库表中添加翻译字段并手动更新翻译。或
  • 并通过AJAX进行处理

顺便说一句,Miguel Grinberg制作的Flask Mega教程是非常著名的Flask教程。所有这些情况都包含在其中。

SelectField
选项可以由
lazy\u gettext()处理。

一些字符串文本通常在应用程序启动时在请求外部分配,因此在计算这些文本时,无法知道使用哪种语言

Flask Babel提供了一个名为
lazy\u gettext()
的惰性计算版本

对于
选项

来自flask\u babel import\u,lazy\u gettext as\u l
类别PaymentStatus(enum.enum):
已拒绝=_l(‘已拒绝’)
已完成=_l('已完成')
过期=_l(“过期”)
定义(自我):
回归自我价值

QuerySelectField
query\u factory
接受从数据库查询的值。这些值不应由Flask Babel/Babel处理。因为数据库在Python源代码之外存储数据

可能的解决办法:

  • 在数据库表中添加翻译字段并手动更新翻译。或
  • 并通过AJAX进行处理

顺便说一句,Miguel Grinberg制作的Flask Mega教程是非常著名的Flask教程。所有这些情况都包含在其中。

谢谢你的回答@Simba:)是的,我从Flask Mega Tutorial中学到了很多,这是Miguel Grinberg的非常棒的教程:)谢谢你的回答@Simba:)是的,我从Flask Mega Tutorial中学到了很多,这是Miguel Grinberg的非常棒的教程:)
from flask_babel import lazy_gettext as _l

class LoginForm(FlaskForm):
    username = StringField(_l('Username'), validators=[DataRequired()])
    # ...