tri.form是一个表单库

tri.form的Python项目详细描述


三.形式

tri.form是django和flask的可选表单库。它的灵感来源于标准的django表单,并源于它的挫败感。

与django表单相比的主要功能:

  • 支持跨表/对象边界的语法,类似于django对queryset的处理。
  • 发送一个可调用的,该可调用的值经过后期计算以确定是否应显示字段( show )。这对于向管理员显示稍有不同的表单非常方便,例如。
  • 轻松配置,无需编写只在一个地方使用的整个类。

示例

您可以创建 表单的子类

classUserForm(Form):name=Field.text()username=Field.text(is_valid=lambdaform,field,parsed_data:parsed_data.startswith('demo_'))is_admin=Field.boolean(show=lambdaform,field:form.request.user.is_staff,# show only for stafflabel_template='tweak_label_tag.html')defedit_user_view(request,username):form=UserForm(request=request)user=User.objects.get(username=username)ifform.is_valid()andrequest.method=='POST':form.apply(user)user.save()returnHttpRedirect('..')returnrender(template_name='edit_user.html',context_instance=RequestContext(request,{'form':form}))
<!-- edit_user.html --><formaction=""method="post">{% csrf_token %}
  <div><table>
      {{ form }}
    </table></div><inputtype="submit"value="Save"/></form>

或者用 字段 列表实例化 表单并直接使用:

defedit_user_view(request,username):form=Form(fields=[Field.text(name='name',is_valid=lambdaform,field,parsed_data:parsed_data.startswith('demo_')),Field.text(name='username'),Field.boolean(name='is_admin',show=lambdaform,field:form.request.user.is_staff,# show only for stafflabel_template='tweak_label_tag.html',)])# rest of view function...

您还可以从django模型自动生成表单(但仍然可以更改行为!).以上示例 相当于:

defedit_user_view(request,username):form=Form.from_model(request.POST,User,# the field 'name' is generated automatically and we are fine with the defaultsusername__is_valid=lambdaform,field,parsed_data:parsed_data.startswith('demo_'),is_admin__label_template='tweak_label_tag.html',is_admin__show=lambdaform,field:form.request.user.is_staff)# show only for staff# rest of view function...

或者更好:使用tri.form.views.create_或_edit_对象

defedit_user_view(request,username):returncreate_or_edit_object(request,model=User,is_create=False,instance=User.objects.get(username=username),form__username__is_valid=lambdaform,field,parsed_data:parsed_data.startswith('demo_'),form__is_admin__label_template='tweak_label_tag.html',form__is_admin__show=lambdaform,field:form.request.user.is_staff)# show only for staff# no html template! tri.form has a nice default for you :P

tri.form预打包作为"快捷方式"的常用字段类型的默认设置集。一些例子包括 field.boolean field.integer field.choice 。快捷方式的完整列表可以在field的api文档中找到。

运行测试

您需要安装TOX,然后只需进行测试

许可证

更改日志

7.0.0(2019-06-10)

  • 将包从 tri.form 重命名为 tri-u form 。这是一个突破性的变化
  • 放弃python2支持
  • 放弃了对django<;2.0的支持

6.0.2(2019-06-03)

  • parse_emtpy_string_as_none 的默认值更改为基于模型字段 null 属性。
  • 不应过早覆盖默认值
  • field.choice 现在有一个正常的默认解析器,使用 choice\u to\u选项
  • 更改了render属性以防止您犯一些常见错误
  • 修正了时间渲染值
  • 修正并改进了from_model_expand的测试
  • 修正了django textfield 的模型中的 。应该是 字段。textarea ,而不是 字段。text

6.0.1(2019-05-06)

  • 修复了from_model在继承时丢失类型的情况

6.0.0(2019-04-12)

  • 使快捷方式与子类化兼容。以前的修复方法并没有完全起作用。
  • 使用新的major tri.declarative和update来遵循类成员快捷方式的新样式
  • 主要修正了如何从模型 工作。子类化it>字段 现在工作正常。这是一个突破性的变化。
  • 删除了 字段。逗号分隔的快捷方式。这是从未使用过的,而且测试很差。

5.4.0(2019-04-01)

  • 使 字段 快捷方式与子类化兼容

5.3.1(2019-03-20)

  • 修正django的doesnotexist事件不会泄漏字段验证代码

5.3.0(2019-02-18)

  • 如果您子类表单,则此自定义类现在可以在from_model的 代码路径中正确使用。
  • form 现在有一个可加细的属性 field_class 如果您有子类的话,应该使用它来指向您的 field 子类。这最好在继承自 form 的类的 meta 类中完成。
  • 添加了 表单。创建或编辑对象 如果您有子类,它将尊重您的子类。

5.2.2(2019-01-28)

  • 修正了5.2.0中引入的转义错误:如果在属性中有 { } ,则可能会发生keyerror崩溃。

5.2.1(2019-01-16)

  • 固定覆盖构建(这也破坏了travis构建,因此破坏了pypi发布过程)

5.2.0(2019-01-16)

  • "提交"按钮的呈现现在是一个链接,您现在可以在这里提供自己的按钮和链接。
  • 修复了某些情况下渲染字段中的崩溃。这是由于不正确地使用了 format\u html
  • 烧瓶和Jinja2支架
  • 更新了Modern Django的示例,并添加了一个示例
  • 在字段上更新attrs渲染(这会引入一些抨击)
  • 渲染属性支持样式属性。这意味着您现在可以执行 链接(attrs\u style\uu display="none") 例如。

5.1.1(2018-10-23)

  • 文件字段试图在表单验证错误时呈现二进制内容。这是Django 2.1的崩溃
  • 在与 >遍历外键关系时,已断开

5.1.0(2018-10-09)

  • 放弃了对django 1.8的支持
  • 修正了Django 2.0的折旧警告

5.0.12(2018-10-03)

  • 添加了 字段。boolean三态 用于编辑允许空值的布尔字段

5.0.11(2018-09-21)

  • 简化的 缺少 定义

5.0.10(2018-06-29)

  • 修复链接属性的计算

5.0.9(2018-06-19)

  • 修正了python3版本检查的兼容性。
  • 修复了对浅git克隆的释放检查

5.0.8(2018-06-19)

  • 固定释放功能

5.0.7(2018-06-18)

  • 阶梯式三重声明依赖。

5.0.6(2018-06-15)

  • 修复多个选项字段上的不可编辑模式。
  • 成员路径的模型支持。
  • 使 链接 属性在表单参数上变懒。

5.0.5(2018-04-11)

  • 修正表单提交链接呈现。

5.0.4(2017-10-16)

  • 字段上还原新的默认分析器。选择

5.0.3(2017-10-16)

  • 改进 字段上的默认解析器实现。对于 选项中的对象来说, 的合理实现就足够了。
  • 固定评估顺序,以便在f对雅思成绩进行评估。( field.show 仍在早期调用)

5.0.2(2017-10-06)

  • field.from_model 生成的外键分析器不正确。

5.0.1(2017-09-15)

  • 编辑对象时正确检查唯一约束
  • form 构造函数中设置 form.instance 的错误太晚,导致在某些lambdas中 attributeerror

5.0.0(2017-08-22)

  • 重构为使用新的tri.declarative:using refinableobject shortcut ,and the new call_target parameter of namespace
  • 将调度分隔符从 \/cite>更改为 /
  • 字段上的 标签 更改为 显示名称 。这与tri.query和tri.table一致。
  • field.choice 错误地处理后验证(修复github问题9)
  • 表单 现在不尝试从show=false的字段中读取初始数据和表单数据
  • 创建或编辑对象 不再使用参数 呈现上下文 ,使用 呈现上下文
  • 如果您给它一个 queryset 作为 选项,则不再需要指定 模型 参数来 选项集 多选项集 (而不是提供一个可调用的)
  • field.choice\u queryset field.multi\u choice\u queryset 现在重新评估每次使用的queryset(修复tri.table github问题16)

4.10.1(2017-06-20)

  • 错误修复: 在保存时 创建或编辑对象的回调 缺少 窗体 参数

4.10.0(2017-06-12)

  • 修复了当其他命名空间窗体出现错误时未呈现命名空间窗体的错误

4.9.0(2017-05-31)

  • 在有多个表单的情况下,将属性"name"添加到表单以便命名空间帖子

4.8.0(2017-05-23)

  • 表单上添加了有用的返回值。apply(…)
  • 提高 字段的repr
  • 添加了用于同时设置所有字段的可编辑设置

4.7.1(2017-04-24)

  • 端点分派的错误修复:必须允许结果为空列表/dict

4.7.0(2017-04-24)

  • 添加了链接类,并根据链接重新定义了表单上的提交按钮
  • 修正了django在1.10之前和之后对模板呈现和requestcontext的错误处理
  • 放弃对django 1.7的官方支持
  • 表单中添加了 attrs 成员,并添加了用于将属性呈现为html的 render\u attrs 方法
  • 添加了6作为依赖项

4.6.2(2017-04-18)

  • 固定 render\u attrs 以转义引号

4.6.1(2017-04-11)

  • 修复了不可编辑的字段,以便可以覆盖渲染
  • 修正了当字段出现错误时发送原始数据以呈现值的错误

4.6.0(2017-03-15)

  • 字段 类现在继承自 对象 ,使实现更像pythonic。 (在构造函数调用中仍然可以重写属性,请参见 namespaceawareobject
  • 为自定义数据添加了 form.extra 命名空间。

4.5.0(2016-12-19)

  • 在属性到 字段 定义以启用django文件下载的自定义处理

4.4.0(2016-12-13)

  • 在保存后将窗体上的实例设置为能够在重定向中使用新创建的主键

4.3.1(2016-12-08)

  • 防止代码在导入时运行

4.3.0(2016-10-20)

  • 延迟评估选定的选项。

4.2.0(2016-10-06)

  • 添加 端点 命名空间到 窗体 字段 构造函数以添加自定义端点回调。
  • 添加配置和验证端点实现

4.1.0(2016-09-20)

  • 修正当存在多个字段错误时表单字段错误输出的格式设置
  • 修正表单验证中的错误,在值错误的选项(如0)中缺少"信令所需"字段
  • 在save in forms/views.py上实现djangos唯一性验证
  • 固定url字段上的输入类型

4.0.0(2016-09-14)

  • 改进了对模型的处理。现在您可以无问题地执行以下操作:
form=Form.from_model(field__foo__class=Form.integer)
  • 参数 db_field form.fields_from_model 已重命名为正确的 字段
  • 参数 db_field to create_members_from_model 已被重命名为 member_params_by_member_name
  • 更好的逻辑来确定我们在发布时所处的模式
  • 允许 作为 端点调度前缀

3.8.0(2016-09-12)

  • 修复了 创建或编辑对象中的命名空间分派错误

3.7.0(2016-08-17)

  • 与Django 1.9&1.10兼容

3.6.0(2016-08-16)

  • field.datetime在接收的格式上更为宽容:它不接受ISO8601格式,但缺少秒或秒+分钟
  • field.boolean字段不符合指定的输入模板
  • 解析为列表的输入(字段是列表)现在可以正常工作:无输入不会传递给验证函数。
  • 修复了文档的pypi呈现
  • 更多诚实的保险号码

3.5.0(2016-06-16)

  • 添加 is_full_form 参数到form以可选地控制"-"="-"标记表单字段的呈现

3.4.0(2016-06-15)

  • 在缺少django模型映射时添加了更好的错误消息
  • 固定从初始值填充只读字段

3.3.0(2016-06-02)

  • 错误修复

3.2.0(2016-05-26)

  • 默认"帮助"文本不应在无效引用时爆炸
  • 删除了一些死代码

3.1.0(2016-05-26)

  • 修复了field.text到field.textarea的混乱命名问题
  • 支持ajax后端。字段的新参数:endpoint_path和endpoint_dispatch。目前只为field.choice_queryset实现,并为select2定制。要使用它:指定template_name='tri_form/choice_select2.html'。

3.0.0(2016-05-26)

  • 引入解析模式。这将修复部分提交表单的验证,使用tri.form解决筛选器和其他问题。
  • 重构为使用tri.declarative@dispatch
  • 添加了终结点处理。这对于使用ajax而不是预先加载选项非常有用。
  • form.errors现在是一个集合
  • views.create_object/edit_object/create_或编辑_object现在是默认参数r_to_响应,而不是render_to_字符串。这是一个潜在的制动变化。

2.2.0(2016-04-25)

  • 自动字段模型处理中字段的小错误修复

2.1.0(2016-04-20)

  • 修正django模型时django模型中字段的断开空白字段值 空白设置为真。

2.0.0(2016-04-18)

  • 将form.from_model method更改为需要在 field_uuu 命名空间下的数据库字段kwargs。这是一个突破性的变化。
  • 修复了在django create视图中保存外键的问题
  • 在声明的字段和类meta中启用混合列定义。

1.16.0(2016-04-15)

  • 在python 2中修复表模式渲染

1.15.0(2016-04-08)

  • 固定单选按钮渲染

1.14.0(2016-04-01)

  • 增加了Python3支持
  • 添加了供tri.table等人重用的渲染助手函数

1.13.0(2016-03-10)

  • 将多个字段修复为一个字段

1.12.0(2016-03-03)

  • 添加对django 1.8的支持

1.11.0(2016-02-29)

  • 用于不通过窗体进行完全往返的日期时间字段(它们输出 毫秒后,分析失败)field.file不存在。
  • 更改了指定HTML属性和类的语法。他们现在正在使用 与其他事物相同的处理方式,例如: field.choice(attrs_u foo="bar",attrs_u class_u baz=true)将产生一些结果 像 <;选择…class="baz"foo=bar>;…<;/选择>;

1.10.0(2016-02-08)

  • 确保表单验证只运行一次
  • 固定输入窗体类和呈现上下文以创建或编辑对象视图

1.9.0(2016-01-15)

  • 固定字段属性的默认值初始化为不重用容器。
  • 为模型对象生成窗体时添加了对ManyToManyField的支持。
  • 添加了"read_from_instance"和"write_to_instance"回调,用于自定义实例编组。

1.8.0(2016-01-13)

错误修复版本。

  • 在禁止表单订单自定义的字段中添加了缺少的"after"属性
  • 固定了"attr"的默认值处理,当不应读取任何属性时,将"none"设为有效值。
  • 修正了对必需字段的css处理。

1.7.0(2016-01-13)

  • 即使没有其他选择,对选择的评估也会变懒。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?   控制台Java:不使用新行更新命令行中的文本   java servlet接收xml数据时,出现错误   使用REST API在Bitbucket中复制或复制存储库   java如何在JavaFX中对齐一行?   java如何在活动中显示通过服务获得的数据?   返回BigDecimal作为字符串:返回int   java组织。openqa。硒。InvalidSelectorException:尝试查找元素时选择器无效   java仅在阻塞状态下通知和通知所有影响线程   java JBOSS无法启动部署   java方法的返回值能保证类型安全吗?   JavaeShadoop序列化组织。阿帕奇。hadoop。木卫一。短写失败   java如果我在同一个类上同步了两个方法,它们能同时运行吗?   不使用java数据库的spring分页实现   java如何将字符串切碎成这样的数组?