跳转到主要内容

动态Django表单构建器。

项目描述

Django表单工厂

动态Django表单构建器。

https://travis-ci.org/praekelt/django-formfactory.svg?branch=develop https://coveralls.io/repos/github/praekelt/django-formfactory/badge.svg?branch=develop

安装

  1. django-formfactory安装或添加到Python路径中。

  2. formfactory添加到您的INSTALLED_APPS设置中。

  3. url(r'^formfactory/', include("formfactory.urls", namespace="formfactory"))添加到您的URL模式中(如果您打算使用详细视图,则此操作是必需的)

依赖关系

FormFactory利用了Python markdown包以及djano-simplemde。最新测试版本已锁定在

使用

django-formfactory允许用户在CMS中创建表单和向导。

设置

FORMFACTORY[“field-types”]

控制Admin中可以选择的表单字段类型。支持添加非Django字段:("<module_for_field>", "<display_name>")例如:("formfactory.fields.ParagraphField", "ParagraphField")

FORMFACTORY[“widget-types”]

控制Admin中可以选择的表单小部件类型。支持添加非Django小部件:("<module_for_widget>", "<display_name>")例如:("formfactory.widgets.ParagraphWidget", "ParagraphWidget")

小部件和字段

FormFactory包含ParagraphField和ParagraphWidget的组合。这些组合的预期用途是在字段之间添加复制内容。大多数情况下,允许使用相同的基模板。

视图

django-formfactory提供基类FormViewFactoryWizardView,都可以直接使用或继承以获取额外的上下文或表单数据处理。

模板

django-formfactory允许您通过添加模板或为单个表单添加模板来覆盖所有表单的模板,或者添加到您的项目模板目录中。同时还包括以供包含标签使用。

包含标签

使用提供的包含标签:{% render_form form_object %}

模型

FormData
用户提交的表单数据的基本存储。
  • uuid:数据集中每个数据项的通用uuid

  • form:Form对象

FormDataItem
每个字段值的存储,由FormData对象封装。
  • form_data:FormData对象

  • form_field:FormField对象

  • value:特定字段提交的文本值

Action
当表单保存时将触发的事件。
  • action:项目中注册的所有操作的选项

  • as_function:返回动作函数的属性

ActionParam
预定义或自定义动作函数所需参数。作为一组kwargs传递给动作。
  • key:参数名称

  • value:参数值

  • action:Action对象

Form
封装一组表单字段并定义在保存时将执行的操作的表单对象。
  • title:描述性标题

  • slug:友好的URL标识符

  • actions:在保存时按顺序执行的操作Action对象集合

  • success_message:表单成功提交时,由django消息框架显示的消息字符串

  • failure_message:表单提交失败时,由django消息框架显示的消息字符串

  • ajax_post:启用JS AJAX提交的标志,用于默认formfactory模板,或在覆盖模板时用作钩子。

Wizard
封装将在WizardView的done步骤上执行的一组表单和动作的向导对象。
  • title:描述性标题

  • slug:友好的URL标识符

  • 表单:一组有序的表单,映射到 WizardView 的每个步骤。

  • redirect_to:在向导完成步骤后应重定向到的 URL(例如,“/”)。

  • actions:一组有序的 Action 对象,应在 WizardView 的 done 步骤中按顺序执行。

  • success_message:表单成功提交时,由django消息框架显示的消息字符串

  • failure_message:表单提交失败时,由django消息框架显示的消息字符串

done 步骤中调用每个表单的 save() 方法。这确保了为每个表单定义的所有操作都被执行。之后,在 WizardView 重定向之前执行向导操作。

WizardView 重定向到的 URL 可以以两种方式之一指定:- 它可以在 CMS 中在向导对象的 redirect_to 字段中指定。- 它也可以作为 URL 上的 GET 查询参数指定。查询参数的键可以通过设置 FORMFACTORY["redirect-url-param-name"] 在您的设置文件中指定。

FieldChoice
一组字段选项,填充到 MultiSelectSelect 小部件中
  • label:可读的下拉标签

  • value:将被提交的值

FormFieldGroup
一个封装了一组表单字段的模型。
  • title:在渲染表单集图例时使用的标题

  • forms:与该分组关联的 Forms

FormField
定义了一个具有所有选项和必需属性的表单字段。由 Form 对象封装。
  • title:描述性标题

  • slug:友好的URL标识符

  • position:字段在表单中渲染的位置

  • form_groups:与该字段关联的 FormFieldGroups

  • field_type:一组字段类型,在应用设置中定义

  • widget:一组小部件,在应用设置中定义

  • label:字段标签文本

  • initial:字段将被填充的初始值

  • max_length:值的最大长度

  • help_text:将在字段下方渲染的辅助字符串

  • placeholder:将在字段占位符中渲染的字符串

  • required:表示字段是否必需的布尔值

  • disabled:禁用字段(只读)的布尔值

  • choices:一组 FieldChoice 对象

  • model_choices:一个通用的外键,指向定义表单字段选择的模型

  • additional_validators:一组自定义定义的字段验证器

模型选择

要为字段选择定义自定义模型,该模型需要有一个指向包含键和值字段的枚举项模型的 items 相关名称。

from django.db import models

class Enum(models.Model):
    title = models.CharField(max_length=100)

class EnumItem(models.Model):
    enum = models.ForeignKey(Enum, related_name="items")
    value = models.CharField(max_length=100)
    label = models.CharField(max_length=100)

操作

FormFactory 带有一些预定义的操作
  • store_data:将提交的日期存储到 key/value store_data。不需要 ActionParam

  • send_email:通过电子邮件发送数据。需要以下 ActionParam
    • from_email_field:映射到将发送电子邮件的表单字段

    • to_email_field:映射到将发送电子邮件的表单字段

    • subject_field:映射到用于电子邮件主题的表单字段

  • login:记录用户登录。需要以下 ActionParam
    • username_field:映射到将填写用户名的表单字段

    • password_field:映射到将填写用户名的表单字段

  • file_upload:处理上传文件到预定义路径。需要以下 ActionParam
    • upload_path_field:映射到已设置上传路径的表单字段

可以通过在 <yourapp or project>/formfactoryapp/actions.py 中创建一个函数来添加自定义操作。例如

from formfactory import actions

@actions.register
def my_custom_action(form_instance, **kwargs):
    # do some stuff

验证

可以通过在 <yourapp or project>/formfactoryapp/validators.py 中创建一个函数来添加自定义验证器。例如

from formfactory import validators

@validators.register
def my_custom_validator(value):
    if not condition:
        raise ValidationError("Failed")
    return True

作者

Praekelt 咨询

  • Jonathan Bydendyk

  • Phala Ramonyai

  • Altus Barry

变更日志

0.2.3

  1. 修复默认 None 占位符。

0.2.2

  1. 修复 setup.py 语法。

0.2.1

  1. 添加了ParagraphField和ParagraphWidget。

  2. 在FormField模型中添加了Paragraph markdown字段,用于与字段和小部件一起使用。

  3. 支持除Django基础以外的字段和小部件。

  4. 解决Django 1.9和1.9.1中的order_by问题。

  5. 对FormField上的field_type和widget字段进行数据迁移。

  6. 添加缺少的迁移。

0.2

  1. 添加Ajax表单提交功能。

0.1

  1. 初始版本发布。

项目详情


下载文件

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

源分发

django-formfactory-0.2.3.tar.gz (84.7 kB 查看散列)

上传时间

构建分发

django_formfactory-0.2.3-py2.7.egg (137.8 kB 查看散列)

上传时间

由以下支持