跳转到主要内容

Plone wtforms集成

项目描述

简介

collective.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字段集渲染表单

控制面板

还可以轻松构建控制面板表单

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类属性

formClass

使用的WTForm类。 必需

label

显示在h1标签中的表单标签

description

表单描述

prefix

表单输入名称值的前缀。默认为wtform

buttonPrefix

按钮名称的前缀。默认为form.actions.

wrapWithFieldset

一个布尔值,用于决定是否应将字段包裹在字段集中。默认为True

csrfProtect

保护表单免受csrf攻击。默认为True

buttons

按钮名称的迭代器。默认为('保存','取消')

fieldsets

(字段集名称,(字段名称,...))的迭代器。默认为空

form

渲染表单时创建的WTForm表单实例。

data

覆盖此属性以指定填充表单的默认值。这必须返回一个字典。

submitted

布尔值,表示表单是否已提交。

renderField(field)

渲染特定字段的函数。

renderForm()

渲染整个表单的函数。

validate()

检查csrf保护和验证表单。

submit(button)

必须重写此方法以处理表单提交和运行验证。返回一个值以覆盖渲染模板(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
mungeForm(form)

创建表单后对其进行修改的方法。这可以用来应用动态选项。

变更日志

1.0a6(2012-11-26)

  • 处理按钮名称中的空格 [vangheem]

1.0a5(2012-11-26)

  • 处理Unicode数据 [vangheem]

  • 不要使用和显示默认的表单标题和描述

  • 将字段描述移动到标签后面,通常是这里

  • 添加了本地化目录,以便能够翻译基本默认按钮

  • 提供了意大利语翻译

  • 启用了Plone表单标签功能

1.0a4(2012-08-29)

  • 提供了一些Bootstrap类提示

1.0a3(2011-10-11)

  • 修复了某些情况下初始表单数据无法工作的问题。

1.0a2(2011-10-06)

  • 修复了控制面板模板使用问题。

  • 添加了在创建后轻松修改表单的能力

  • 添加了提供表单值初始数据的能力

1.0a1(2011-09-29)

  • 初始发布

项目详情


下载文件

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

源分布

collective.wtforms-1.0a6.zip (30.7 kB 查看哈希值

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面