插件wtforms集成
collective.wtforms的Python项目详细描述
简介
wtforms是与WTForms表单库的plone集成。
基本完整表单示例
基本形式的构造如下:
from wtforms import Form, TextField from wtforms import validators class MyForm(Form): one = TextField("Field One", [validators.required()]) two = TextField("Field Two") three = TextField("Field Three") from collective.wtforms.views import WTFormView class MyFormView(WTFormView): formClass = MyForm buttons = ('Create', 'Cancel') def submit(self, button): if button == 'Create' and self.validate(): # do fun stuff here self.context.value = self.form.one.data
然后用zcml连接表单:
<browser:page name="my-form" for="*" class=".pathto.MyFormView" permission="zope2.View" />
您还可以覆盖使用的模板,然后执行以下操作:
<form tal:replace="structure view/renderForm" />
在视图中的任何位置呈现窗体。
字段集
您可以指定哪些字段与哪些字段集一起使用 也很容易:
class MyFormView(WTFormView): formClass = MyForm buttons = ('Create', 'Cancel') fieldsets = ( ('Fieldset One', ('one', 'two')), ('Fieldset Two', ('three',)) ) def submit(self, button): if button == 'Create' and self.validate(): # do fun stuff here self.context.value = self.form.one.data
这将呈现标准plone feildsets中的表单。
控制面板
也可以轻松构建控制面板窗体:
from collective.wtforms.views import WTFormControlPanelView class MyFormView(WTFormControlPanelView): formClass = MyForm buttons = ('Save', 'Cancel') def submit(self, button): if button == 'Save' and self.validate(): # do fun stuff here self.context.value = self.form.one.data
wtformview类属性
- 窗体类
- 使用的wtform类。必需的
- 标签
- 显示在h1标记中的表单标签
- 说明
- 表单描述
前缀
- 表单输入名称值的前缀。默认为wtform
- 按钮定义
- 按钮名称的前缀。默认为form.actions。
- WrapWithFieldset
- 一个布尔值,决定是否将字段包装到字段集中。默认为真
- csrfprotect
- 保护窗体免受csrf攻击。默认为真
- 按钮
- 一组按钮名。默认为('保存','取消')
- 字段集
- 一个iterable of(字段集名称,…)。默认为空
- 表格
- 在呈现窗体时创建的wtform窗体的实例。
- 数据
- 重写此属性以指定要用其填充表单的默认值。这必须返回字典。
- 已提交
- 布尔值,如果表单是否已提交。
- 渲染场(场)
- 呈现特定字段的方法。
- renderform()
- 呈现整个窗体的方法。
- 验证()
- 检查csrf保护并验证表单。
- 提交(按钮)
必须重写的方法才能处理表单sumission并运行验证。返回一个值以重写模板的呈现(self.index())。例如,如果执行重定向,则无需同时呈现页面:
def submit(self, button): if button == 'Save' and self.validate(): self.context.value = self.form.one.data self.request.response.redirect(self.context.absolute_url()) return 1
- 芒格形式(形式)
- 创建表单后处理该表单的方法。这是可用于应用动态选择的功能。
更改日志
1.0A6(2012-11-26)
- 处理按钮名称中的空格 [范希姆]
1.0A5(2012-11-26)
- 处理Unicode数据 [范希姆]
- 不要使用和显示虚拟默认表单标题和说明
- 将字段描述移到标签后,通常是
- 添加了locales目录,用于转换基本的默认按钮
- 提供意大利语翻译
- 启用了plone form制表功能
1.0A4(2012-08-29)
- 提供一些引导类提示
1.0a3(2011-10-11)
- 修复初始表单数据不起作用的问题 在某些情况下。
1.0a2(2011-10-06)
- 使用固定控制面板模板。
- 添加创建后轻松处理表单的功能
- 添加提供初始数据以形成值的功能
1.0A1(2011-09-29)
- 初始版本