插件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第三方库


热门话题
Java NIO选择器最多只能选择50个SelectionKeys?   java阻止ImageButton创建新活动   为什么Java方法“Arrays.copyOf”处理中的整数数组与处理对象数组时的行为不同   java将安卓 1.6日历字段提取到vcal   将字符串转换为双精度后的java问题   java使用Webflux,是否可以使用AOP获取用于日志记录的ServerHttpRequest   java与jTextArea的基本区别是什么。setText()和jTextArea。append()方法?   java程序执行时间|将值保存到文件或数据结构?   java如何将表示字符的整数转换为字符串?   Java LWJGL新的渲染问题windows   java GUI提供异常   java创建第二个对象使类的函数不再工作   如何在java中将000验证为3位数字?   java bigO算法的时间复杂度,可以在不重复的情况下找到最长的子串   在30像素内点击按钮后,java在两个图像之间转换   java eclipse maven nexus不可解父pom   当存在其他SecurityConstraint时,java TransportGuary机密将被忽略   重新连接后激发的java Red5客户端流断开事件   javafx聊天应用程序中连接客户端的java问题