未提供项目说明
wtforms-field-factor的Python项目详细描述
wtforms现场工厂
在表单构造时动态创建字段。在
为什么?在
例如,根据请求翻译字段标签,而不依赖全局状态。 此外,还可以有条件地排除字段。这避免了在诸如。 具有在单元测试期间不相关或不可行的表单字段。在
怎么做的?在
让我们看一个用例,其中字段标签必须根据请求的区域设置而更改:
fromgettextimporttranslationfromtypingimportListfromwtforms_field_factoryimportfield,Form,DefaultMetafromwtformsimportStringFieldclassMyMeta(DefaultMeta):def__init__(self,ordered_locales:List[str]):self.ordered_locales=ordered_locales@propertydeflocales(self):# translate messages within wtforms depending on the request's locale(s)returnself.ordered_localesclassMyBaseForm(Form):def__init__(self,ordered_locales:List[str],**kwargs):self.ordered_locales=ordered_localessuper().__init__(meta=MyMeta(ordered_locales),**kwargs)@field(name="name")defname_field(self):_=translation("default",languages=self.ordered_locales)returnStringField(label=_("Name"))
上面的示例不仅转换name字段的标签,还转换内部wtforms消息 例如字段错误。在
在外部函数负责创建字段的情况下(有助于重用字段 工厂)或如果您想预计算某些对象(例如gnutransflations对象),则 可以执行以下操作:
^{pr2}$只要用你觉得最好的方法。在这里没有一个正确的方法来实现你的目标。 重要的一点是,你现在有了一个明确的合同,不依赖全球政府。在
贡献
在提交之前,请运行以下命令并检查是否成功:
pip install --user -r requirements-dev.txt &&\ black wtforms_field_factory.py &&\ pylint wtforms_field_factory.py &&\ pytest &&\ coverage report --fail-under=100
- 项目
标签: