插件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)

  • 初始版本

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

推荐PyPI第三方库


热门话题
Android深度链接的java模式匹配   jstl在JSP中添加外部资源(CSS/JavaScript/images等)   Java开关环路中断故障   java Appengine通道API开发服务器vs生产   java断言等于Junit中的两个列表   java用“真实数据”建立测试系统   Java中使用番石榴BiMap的词典   java试图在圆周上绘制位图,在实现中找到一些偏移   json Java curl响应   java使用hibernate或JPA获取过程输出的列名   java从Android移动应用程序获取电话号码   java访问嵌套的JsonNode元素,并用逗号分隔   未使用注释的java未经检查或不安全操作   控制台中的java输出为空   java使用Android应用程序的自定义适配器将项目动态添加到列表视图   java如何解决对接口中静态方法的需求?   尝试从其他活动调用数组字符串时发生java错误   仅设备上的java Android NDK致命信号11(SIGSEGV)