跳转到主要内容

Pyramid 框架的表单生成库

项目描述

pform

https://travis-ci.org/fafhrd91/pform.png

简单的表单示例

表单包含三个不同的子系统:基本表单属性、字段和动作。

import pform
from pyramid.httpexceptions import HTTPFound


class EditForm(pform.Form):

     label = 'Edit form'

     fields = pform.Fieldset(
         pform.TextField(
            'name', title='Name')
     )

     @pform.button('Save')
     def safe_handler(self):
         data, errors = self.extract()

         if errors:
             self.add_error_message(errors)

         self.context.name = data['name']

     @pform.button('Cancel')
     def cancel_handler(self):
         return HTTPFound(location='.')

此表单渲染一个字段 name 和两个动作 safecancel(提交按钮)。现在我们可以渲染此表单

from pyramid.view import view_config

@view_config(route_name='....', renderer='myview.jinja2')
def my_view(request):
    form = EditForm(some_context, request)
    return form()

还可以使用表单类作为视图

@view_config(route_name='....')
class EditForm(pform.Form):

    fields = ...

要执行额外的自定义表单初始化,只需重写 update 方法,如果 update 方法返回字典,则这些值会传递到表单模板中

class EditForm(pform.Form):

    def update(self):
        # custom form initialization
        return {some_data: some_value}

要获取表单值,请使用 extract 方法,此方法返回 dataerrorsdata 是表单结果,errors 是错误列表

class EditForm(pform.Form):

    @pform.button('Save')
    def save_handler(self):
        data, errors = self.extract()

        if errors:
            self.add_error_message(errors)

        # save data
        ...

自定义

有三种方式可以自定义字段和表单

  1. 全局自定义

pform 库使用 player::https://github.com/fafhrd91/pform/tree/master/examples 库进行自定义。pform 库为所有模板定义了 form 层类别。

  1. 字段/表单自定义

还可以为每个字段自定义输入模板的小部件。您可以将tmpl_widget参数传递给字段构造函数进行小部件自定义,并将tmpl_input参数传递给输入生成。这两个参数都应该是有效的pyramid渲染器路径。表单接受三种不同的模板,tmpl_viewtmpl_actionstmpl_widgettmpl_view是表单渲染器,tmpl_actions是表单按钮渲染器,tmpl_widget是自定义字段小部件渲染器。如果字段未使用自定义的tmpl_widget,则表单将自动为这些字段中的每个字段设置tmpl_widget

示例

这里有几个示例。您可以在github的< cite>examples 目录中找到它们。

https://github.com/fafhrd91/pform/tree/master/examples

要求

  • Python 2.6+或Python 3.2+

  • virtualenv

许可协议

pform在BSD许可协议下提供。

变更

0.6.2 (01-16-2013)

  • 修复了Chrome的复合和选项模板

0.6.1 (01-09-2012)

  • 允许从操作处理程序返回附加数据

  • 将不同上下文传递给词汇工厂(取决于工厂参数名称:request、content、context)

0.6 (01-07-2013)

  • 添加了OptionsField

  • BaseMultiChoiceField的默认缺失值为[]

  • 在字段集数据提取期间复制字段的缺失值

  • 修复了表单csrf支持

  • 修复了单选字段的'checked'值

  • 如果不进行验证,则不使用缺失值

0.5 (12-21-2012)

  • 为字段和字段集添加了flat属性,对于扁平字段集和组合字段,使用主数据字典而不是子字典

0.4.1 (12-20-2012)

  • 修复了FileField验证

0.4 (12-12-2012)

  • 添加了Composite字段

  • 消息中渲染str

  • 删除了display模式

  • SimpleTerm和SimpleVocabulary重命名为Term和Vocabulary

  • 删除了SimpleVocabulary的from_itemsfrom_value方法,改用Vocabulary构造函数

  • 为表单和字段模板使用

    层类别

  • 按钮类现在继承自InputField

0.3 (11-27-2012)

  • 允许在方法中将str作为错误添加

  • 更好的按钮处理

  • Invalid消息的更好的翻译

  • 更改了Invalid类构造函数的参数顺序

  • Invalid类添加了子错误支持

  • Button类添加了extract参数,如果extract被设置,则从表单中提取值,将错误添加到消息中,并将数据传递给处理程序

  • 添加了pform.button2装饰器,extract参数为true

  • FileField添加了max_sizeallowed_types参数

  • 不要覆盖小部件的custom tmpl_widget

0.2 (11-13-2012)

  • 修复了提交按钮模板

  • 允许从表单更新或操作处理程序返回http响应

  • 添加了对player.layout()的支持

0.1 (11-07-2012)

  • 初始版本

项目详情


下载文件

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

源代码发行版

pform-0.6.2.tar.gz (45.9 kB 查看散列)

由以下支持