跳转到主要内容

YAFOWIL - 声明性、框架无关、灵活的HTML表单

项目描述

yafowil

Latest PyPI version Number of PyPI downloads Test yafowil

另一个表单小部件库

YAFOWIL提供在运行时创建和修改HTML表单的功能。它轻量级,并提供一组可扩展、可重用的蓝图,用于构建灵活的表单。

YAFOWIL不依赖于任何Web框架,但在您的Web框架中使用起来非常方便。

这全部都是为了渲染小部件和提取每个小部件从浏览器返回的数据。它不会与存储发生冲突。

YAFOWIL与大多数其他HTML表单包不同:它全部都是配置。不再需要子类化;不需要特定的架构框架。

Yafowil提供了一个工厂,您可以从其中获取小部件实例。或者您可以注册自己的。

详细文档

如果您想深入了解:i 可以在详细YAFOWIL文档中找到。阅读它,并在15分钟内学习如何使用YAFOWIL表单创建您的示例应用程序。

源代码

源代码位于一个GIT版本控制系统中,其主分支位于github

我们很高兴看到许多分叉和pull请求,以使YAFOWIL变得更好。

贡献者

  • Jens W. Klein

  • Robert Niederreiter

  • Johannes Raggam

  • Peter Holzer

  • Attila Olah

  • Florian Friesdorf

  • Daniel Widerin

  • Georg Bernhard

  • Christian Scholz aka MrTopf

历史

3.1.0 (2023-05-15)

  • 重构数据类型转换。与数据类型相关的提取器和实用工具现在包含在yafowil.datatype中。修复了bytes类型的数据类型转换。[rnix]

  • 拆分yafowil.common模块。[rnix]

    • buttonsubmit蓝图移动到yafowil.button。[rnix]

    • checkbox蓝图移动到yafowil.checkbox。[rnix]

    • email蓝图移动到yafowil.email。[rnix]

    • fieldlabelhelperror蓝图移动到yafowil.field。[rnix]

    • file蓝图移动到yafowil.file。[rnix]

    • hidden蓝图移动到yafowil.hidden。[rnix]

    • lines蓝图移动到yafowil.lines。[rnix]

    • number蓝图移动到yafowil.number。[rnix]

    • password蓝图移动到yafowil.password。[rnix]

    • proxy蓝图移动到yafowil.proxy。[rnix]

    • search蓝图移动到yafowil.search。[rnix]

    • select蓝图移动到yafowil.select。[rnix]

    • tag蓝图移动到yafowil.tag。[rnix]

    • text蓝图移动到yafowil.text。[rnix]

    • textarea蓝图移动到yafowil.textarea。[rnix]

    • url蓝图移动到yafowil.url。[rnix]

  • 测试与pytest一起工作。[rnix]

3.0.1 (2022-12-05)

  • 如果文件操作是replace但没有上传文件,文件提取器会引发一个ExtractionError,而不是静默地将操作更改为keep。[rnix]

  • 记录file蓝图中的vocabulary属性。[rnix]

  • 添加yafowil.common.mimetype_extractor并在file蓝图中使用它。[rnix]

  • 如果找不到持久写入器,将运行时数据路径添加到错误消息中。[rnix]

3.0 (2022-10-06)

  • 支持Python 3.7+。[rnix, jensens]

  • 如果没有定义message_tag,则在error_renderer中尝试翻译普通错误消息。[jensens]

  • 添加valid_classvalid_class_default作为与error_classerror_class_default相反的标记,以标记提取的值有效。[jensens]

  • 添加button蓝图。[jensens]

内部

  • 移除对Nodespaces行为的使用。[rnix]

  • MappingNode替换已弃用的Nodify的使用。[rnix]

  • MappingConstraints替换已弃用的NodeChildValidate的使用。[rnix]

  • MappingAdopt替换已弃用的Adopt的使用。[rnix]

  • WidgetAttributes中移除NodeChildValidateAdopt行为。[rnix]

  • 向工厂添加push_statepop_state。用于在YafowilTestCase中保存和恢复工厂状态。当yafowil测试与外部测试一起运行时,这很有必要,以避免破坏可能的自定义工厂配置。[rnix]

破坏性更改

  • 移除callable_value函数的B/C行为。不再调用无参数的可调用对象作为后备。始终在签名中期望小部件和数据参数。[jensens]

  • datatype转换器现在始终只传递原始提取值。在从callable_value移除B/C行为之前,可以使用接受小部件和数据作为参数并返回实际转换器可调用对象的可调用对象。这种行为从未打算支持数据类型转换。[jensens]

2.3.4 (2021-11-08)

  • 将已弃用的WidgetAttributes.allow_non_node_childs重命名为allow_non_node_children。[rnix]

2.3.3 (2020-05-30)

  • 如果没有任何选项,则不渲染select标签。[rnix]

2.3.2 (2019-11-07)

  • 重构yafowil插件查找。提高了性能。[rnix, jensens]

  • 使用logger.warning代替已弃用的logger.warn。[rnix]

  • 添加yafowil.utils.callable_value。[rnix]

  • yafowil.utils.cssid修复为返回Unicode,以防止在Python 3中渲染不良。[rnix]

2.3.1 (2018-11-07)

  • 不要在yafowil.utils.as_data_attrs中将字符串值作为JSON数据转储。[rnix]

  • yafowil.utils.generic_html5_attrs重命名为yafowil.utils.as_data_attrs。[rnix]

2.3 (2018-07-16)

  • Python 3 兼容性。[rnix]

  • 将doctests转换为unittests。[rnix]

  • 按命名空间缓存yafowil.utils.get_plugin_names的结果。[rnix]

  • 引入yafowil.base.Factory.clear函数。用于测试以准备所需的yafowil.base.factory单例。[rnix]

  • YafowilResources.__init__中创建资源的深拷贝,以防止修改原始资源定义。[rnix]

  • 实现ExtractionError.__eq__以使其可比较。[rnix]

  • common.error_renderer中不再访问已弃用的Exception.message。直接添加msg属性到ExtractionError并使用此属性以保持错误翻译合理。[rnix]

  • form_edit_renderer添加对html5数据属性的支持。[rnix]

2.2.4 (2017-11-13)

  • 在工厂默认值中不要为proxy蓝图设置persist属性。[rnix]

  • generic_datatype_extractor中翻译用于生成提取错误的已弃用的数据类型标签,如果数据类型转换失败。[rnix]

  • generic_datatype_extractor添加到email蓝图。允许的数据类型是strunicode。[rnix]

  • 在多值选择中如果值不再存在于词汇表中,防止在select_display_renderer中出现KeyError。[rnix]

2.2.3 (2017-06-12)

  • 修复 number_extractor。如果提取的值是 UNSET,则返回 UNSET。显式检查 minmax 是否为 None,以确保考虑 0 的边界。[rnix]

2.2.2 (2017-06-07)

  • yafowil.common.generic_datatype_extractoremptyvalue 用作数据类型转换的默认空值。[rnix]

  • 改进 yafowil.common.select_edit_renderer。拆分代码,在处理词汇表时考虑 datatypeemptyvalue。[rnix]

  • yafowil.utils.convert_values_to_datatypeyafowil.utils.convert_value_to_datatype 考虑了空值处理,并接受默认的 empty_value 关键字参数。[rnix]

  • 引入 yafowil.utils.EMPTY_VALUE 标记。[rnix]

2.2.1 (2017-05-15)

  • 引入 hybrid_rendererleaf 小部件属性,这些属性在 hybrid_rendererhybrid_extractor 中被考虑。在 div 蓝图中使用 hybrid_renderer。[rnix]

  • 考虑 div 渲染器中的数据属性。[rnix]

  • 修复空 div 渲染器的渲染。[rnix]

  • generic_display_renderer 渲染空值之前,显式检查 NoneUNSET。[rnix]

2.2 (2016-10-06)

  • 无更改。

2.2b2 (2016-09-08)

  • yafowil.utils.entry_point 装饰器添加到控制入口点加载的顺序。[rnix, 2016-06-27]

2.2b1 (2016-03-01)

  • 修复 setup.py 中的拼写错误,修复 #26 [saily, 2016-03-01]

  • 改进 yafowil.base.WidgetAttributes,使用 __iter__ 而不是 __getitem__ 捕获 KeyError 来检查属性包含。将 yafowil 测试套件(包括官方插件小部件)的整体速度提高了约 18%。[rnix, 2016-02-07]

  • 修复 yafowil.utils.cssid。CSS ID 不得包含特殊字符,这些字符现在被规范化,并且不应包含空格,空格将被下划线替换。[rnix, 2015-11-30]

  • persist 工厂默认值设置为 True,适用于 hiddenproxytexttextarealinespasswordcheckboxselectemailurlnumber 蓝图。[rnix, 2015-11-26]

  • 引入 yafowil.persistenceRuntimeData.writeRuntimeData.has_errors。[rnix, 2015-11-26]

  • lines 蓝图添加默认 class 属性。[rnix, 2015-11-20]

  • hiddenproxytexttextarealinesselectfilepasswordemailurlsearchnumber 蓝图中使用 generic_emptyvalue_extractor。[rnix, 2015-11-20]

  • hiddenproxytextlinesselectnumber 蓝图中使用 generic_datatype_extractor。[rnix, 2015-11-19]

  • 介绍 generic_emptyvalue_extractor。 [rnix, 2015-11-19]

  • 介绍 generic_datatype_extractor。 [rnix, 2015-11-18]

  • Widget.attrs 中的值也可以是 UNSET。 [rnix, 2015-11-18]

  • select 蓝图的默认值从 list() 更改为 UNSET。这代表了一个空的单值选择和一个空的多值选择。 [rnix, 2015-11-18]

  • 修复 URL 提取器。如果不需要在空输入上引发 ExtractionError,则不应引发。 [rnix, 2015-11-18]

2.1.3 (2015-04-12)

  • 修复电子邮件提取器。如果不需要在空输入上引发 ExtractionError,则不应引发。 [rnix, 2015-04-11]

2.1.2 (2015-01-23)

  • 修复 compound_extractor 情况,如果结构化子项也是结构化的话,并且如果是这样则跳过提取。 [rnix, 2014-08-29]

  • 引入 yafowil.resources.YafowilResources 类,该类可以用作特定框架集成代码的资源发布的基类。 [rnix, 2014-08-07]

  • 引入 configure 入口点。它们在 register 入口点之后执行,并应用于主题配置(对于主题配置,确保所有工厂默认值已经设置很重要)。 [rnix, 2014-08-02]

  • 使用 plumbing 装饰器而不是 plumber 元类。 [rnix, 2014-08-01]

  • 对于输入值,用 &quot 替换 "。 [rnix, 2014-07-16]

2.1.1 (2014-06-10)

  • 包不是 ZIP 安全的。 [chaoflow, 2014-06-10]

2.1 (2014-06-03)

  • 考虑 YAFOWIL_FORCE_DUMMY_TSF os.environ 变量,可以在运行测试时强制使用虚拟翻译字符串工厂。 [rnix, 2014-05-13]

  • 添加翻译。 [rnix, 2014-04-30]

  • 添加 yafowil.tsf 模块,该模块用于创建与 yafowil 相关的翻译字符串工厂。 [rnix, 2014-04-30]

  • 由于向后兼容性原因,重新添加 yafowil.utils.Unset 类(从 node.utils 导入)。 [rnix, 2014-04-30]

  • 如果接收到的提取值是空字符串,则在数字提取器中返回 UNSET。 [rnix, 2014-03-20]

  • tag_renderer 中使用 generic_html5_attrs。 [jensens, 2013-03-06]

  • checkboxtextarea 蓝图添加默认 CSS 类。 [rnix, 2013-03-06]

  • 浮点数输入分隔符也可以是逗号。 [rnix, 2013-12-02]

  • 不要为结构化小部件生成 id 属性。修复 #6,其中在表单中生成相同的 id。 [thet, 2013-05-27]

  • 蓝图接受 data 属性以用于通用 HTML5 数据属性。 [rnix, 2013-04-11]

  • 引入 yafowil.utils.generic_html5_attrs 辅助函数。 [rnix, 2013-04-11]

  • checkbox 蓝图引入 with_label 属性。对于跨浏览器的 CSS,非常有用。 [rnix, 2013-03-29]

  • 使用 json.dumps 将数据属性值转换为 JSON。为了满足 JSON 的要求,将数据属性值括在单引号中。将 camelCase 数据属性名称转换为 camel-case。由于 jQuery 1.6,在调用 .data() 后它们会自动转换回 camelCase。 [thet]

  • yafowil.utils 中导入 node.utils.UNSET 而不是提供自己的未设置标记类和实例。 [rnix, 2013-02-10]

  • 添加一个辅助函数,用于从属性键的列表创建数据属性字典,该字典可以作为参数传递给 tag-renderer。 [thet, 2012-12-05]

  • 允许向 textarea_renderer、select_edit_renderer 和 input_generic_renderer 传递自定义 HTML 属性字典。使用字典而不是将它们作为函数参数传递以避免命名空间冲突。 [thet]

2.0.2

  • input_attributes_common 中考虑 maxlength。 [rnix, 2012-11-03]

2.0.1

  • 尽可能使用 attr_value 查找属性值。 [rnix, 2012-10-25]

  • 介绍 attr_value 工具。 [rnix, 2012-10-25]

  • 文本区域可以具有 title 属性。 [rnix, 2012-10-25]

2.0

  • 修复默认帮助文本。 [rnix, 2012-10-10]

  • 修复在调用 display_renderers 时工厂返回错误渲染器的问题 [jensens, 2012-10-09]

  • 将计划重命名为宏。 [rnix, jensens]

  • 可以将自定义链作为字典传递给工厂。 [rnix, 2012-09-28]

  • 为模式 display 介绍 display_proxy 属性。 [rnix, 2012-08-08]

  • 添加通用 tag 蓝图。 [rnix, 2012-08-08]

  • 适配 plumber 1.2。 [rnix, 2012-07-29]

  • 适配 node 0.9.8。 [rnix, 2012-07-29]

  • pep8ify [jensens, 2012-06-08]

  • 使 TBSupplement 与 `zExceptions``zope.exceptions` 兼容。主要更改:HTML 输出不再是默认的,getInfo 的 kwarg 现在是 `as_html`(之前是 `html`)。还向补充中添加了蓝图作为信息,以便更容易识别表单部分。 [jensens, 2012-06-07]

1.3.2

  • generic_display_renderer 中使用 ‘if not value’ 而不是 ‘if value is None’。 [thet, 2012-05-23]

  • 向标签蓝图添加标题属性。 [thet, 2012-05-02]

  • 修复文件提取器。 [rnix, 2012-04-21]

  • 在文件蓝图中避免渲染值属性。 [rnix, 2012-04-21]

1.3.1

  • 标签属性可以是可调用的。 [rnix, 2012-02-19]

1.3

  • 通过使用 entry-point 以更明确和可插拔的方式加载资源。因此,yafowil 扩展(如小部件)可以定义一个 entry-point。 [jensens, 2012-02-14]

  • select 编辑渲染器添加大小属性。 [jensens, 2012-01-20]

  • 修复数字提取器 [jensens, 2012-01-20]

  • select 蓝图添加默认 CSS 类。 [rnix, 2011-12-18]

  • 注册 number 蓝图显示渲染器。 [rnix, 2011-12-18]

  • submit 蓝图渲染器中考虑 expression。 [rnix, 2011-12-18]

  • checked 属性可以在 checkbox 蓝图中被显式设置。 [rnix, 2011-11-21]

  • 修复 yafowil.common.select_edit_renderer 中的错误。在空词汇表中崩溃。 [rnix, 2011-11-16]

  • 添加 lines 蓝图。渲染 textarea 并将行提取为列表。 [rnix, 2011-11-11]

  • 计划 的概念添加到工厂中,它是一组命名的蓝图。计划注册到工厂,并可以使用 # 符号进行引用。 [jensens, 2011-09-29]

  • td 蓝图现在可以作为复合或叶小部件的一部分使用。 [rnix, 2011-09-28]

  • 在复合中接受值属性。 [rnix, 2011-09-27]

  • 使 data.extracted 可作为 odict 使用,其中包含复合子项的值。 [rnix, 2011-09-27]

  • 为了调试和复制目的,将蓝图和自定义参数传递给工厂中 Widget 构造函数。 [rnix, 2011-09-26]

  • yafowil.base.Widget._properties 重命名为 yafowil.base.Widget.properties。 [rnix, 2011-09-26]

  • 添加 div 蓝图。在 `

    ` 元素内渲染。可用于复合和叶小部件。 [rnix, 2011-09-23]

1.2

  • 命名在蓝图和小部件之间做出了区分 [jensens, 2011-09-20]

  • 修复 traceback 测试 [rnix, 2011-09-15]

1.1.3

  • traceback 补充现在具有 HTML 支持。目前缺少 HTML 部分的测试。 [jensens, 2011-09-01]

1.1.2

  • 现在 traceback 补充的格式更好。 [jensens, 2011-08-30]

1.1.1

  • 错误修复:模式 display 会消耗所有之前的渲染。这导致错误小部件在显示模式下无法显示值。修复:empty_display_renderer 现在代理所有之前的渲染。[jensens, 2011-08-11]

1.1

  • 扩展选择小部件,以实现更好的选择和多重选择的UI控制[rnix, 2011-08-05]

  • node.parts.Order 连接到小部件节点[rnix, 2011-07-28]

  • 将标签和字段渲染器定义为显示渲染器[rnix, 2011-07-25]

  • 弃用模式小部件的使用[rnix, 2011-07-08]

  • 现在模式是一个中心元素:每个小部件实例都有一个模式:编辑、显示或跳过。编辑是默认模式,并按常规工作。显示渲染新的显示渲染器链。跳过仅渲染一个空Unicode字符串。[jensens, 2011-07-07]

1.0.4

  • 清理html5处理,我们现在相信novalidate…[jensens, 2011-06-11]

  • 为选择小部件添加disabled属性[jensens, 2011-06-01]

  • 为表单添加novalidate属性[rnix, 2011-05-23]

  • 如果值是UNSET,在模式渲染器中返回空字符串[rnix, 2011-05-23]

1.0.3

  • 测试覆盖率[rnix, 2011-05-07]

  • 添加小部件值验证检查“multivalued”属性与“value”长度的比较[rnix, 2011-05-07]

  • 删除过时的 _value,用户请使用 fetch_value。[rnix, 2011-05-07]

  • 为标签小部件添加可选的 for 属性[rnix, 2011-04-23]

  • 选择提取器 - 修复所需行为[rnix, 2011-04-19]

  • 复合渲染器 - 考虑小部件节点上的“structural”属性[rnix, 2011-04-19]

  • 数字提取器 - 如果UNSET则返回val[rnix, 2011-04-14]

  • 文本区域渲染器 - 检查值是否为None,并渲染空字符串代替[rnix, 2011-04-14]

1.0.2

  • 为电子邮件小部件添加 html5type 属性[rnix, 2011-03-16]

1.0.1

  • 添加 html5required 属性[rnix, 2011-03-16]

1.0

  • 适应节点 0.9[rnix]

  • 文档[jensens, rnix]

1.0-beta

  • 使其工作[jensens, rnix, 等人, 2010-12-27]

许可证

版权所有 (c) 2010-2021, BlueDynamics Alliance, 奥地利,德国,瑞士 版权所有 (c) 2021-2022, Yafowil 贡献者 保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否进行修改:

  • 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  • 二进制形式的重新分发必须复制上述版权声明、本条件列表和以下免责声明在随分发提供的文档和其他材料中。

本软件由版权所有者和贡献者提供“按原样”以及任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性的暗示保证。在任何情况下,版权所有者或贡献者不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,即使被告知了此类损害的可能性,无论损害是基于合同、严格责任还是侵权(包括疏忽或其它)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

yafowil-3.1.0.tar.gz (93.8 kB 查看哈希值)

上传时间 源代码

构建分发

yafowil-3.1.0-py3-none-any.whl (110.3 kB 查看哈希值)

上传时间 Python 3

由以下组织支持