动态Django表单构建器。
项目描述
Django表单工厂
动态Django表单构建器。
安装
将django-formfactory安装或添加到Python路径中。
将formfactory添加到您的INSTALLED_APPS设置中。
将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提供基类FormView和FactoryWizardView,都可以直接使用或继承以获取额外的上下文或表单数据处理。
模板
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
- 一组字段选项,填充到 MultiSelect 和 Select 小部件中
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
变更日志
0.2.3
修复默认 None 占位符。
0.2.2
修复 setup.py 语法。
0.2.1
添加了ParagraphField和ParagraphWidget。
在FormField模型中添加了Paragraph markdown字段,用于与字段和小部件一起使用。
支持除Django基础以外的字段和小部件。
解决Django 1.9和1.9.1中的order_by问题。
对FormField上的field_type和widget字段进行数据迁移。
添加缺少的迁移。
0.2
添加Ajax表单提交功能。
0.1
初始版本发布。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。