一个简单的django应用程序,使用管理界面构建表单。
omniforms的Python项目详细描述
omni forms是一个简单的表单生成器,它与django的管理集成 版本>;=1.8,允许您轻松创建django网站的表单。
安装
pip install omniforms
安装包后,只需将omni_forms添加到 INSTALLED_APPS在您的设置文件中:
INSTALLED_APPS = ['omniforms', ...]
完成此运行后python manage.py migrate将 数据库。
配置
omniforms应用程序可以配置为 方式:
允许的内容类型
您可能不希望管理员能够为all 数据库中不同类型的内容。有两种不同的方法 限制可以与模型关联的内容类型 通过管理界面创建的表单:
全方位表单内容类型
可以定义可以使用的特定应用程序和/或模型 使用OMNI_FORMS_CONTENT_TYPES设置的omniforms应用程序。
例如:
以下配置将允许any应用程序中的模型 foo以及^{tt10}中的modelone和modeltwo模型$ 要使用的应用程序。
OMNI_FORMS_CONTENT_TYPES = [ {'app_label': 'foo'}, {'app_label': 'bar', 'model': 'modelone'}, {'app_label': 'bar', 'model': 'modeltwo'}, ]
如果未定义OMNI_FORMS_CONTENT_TYPES设置,则它将 默认为None和OMNI_FORMS_EXCLUDED_CONTENT_TYPES 将改为使用设置(默认值或其他值)。
Omni_forms_excluded_content_type
可以防止为特定的 使用^{tt13}的应用程序或特定模型$ 设置。
例如:
以下配置将阻止为any创建窗体 应用程序foo中的模型以及modelone和 modeltwo个模型位于bar应用程序中。
OMNI_FORMS_EXCLUDED_CONTENT_TYPES = [ {'app_label': 'foo'}, {'app_label': 'bar', 'model': 'modelone'}, {'app_label': 'bar', 'model': 'modeltwo'}, ]
如果不指定此设置,则默认为以下设置:
OMNI_FORMS_EXCLUDED_CONTENT_TYPES = [ {'app_label': 'omniforms'} ]
这将阻止管理员使用 表单生成器本身。值得一提的是 管理员这样做会带来潜在的安全风险,并且 应该避免。因此,如果您需要定义自己的 OMNI_FORMS_EXCLUDED_CONTENT_TYPES设置 排除上面所示的所有omniforms模型。
omni_forms_custom_field_映射
尽管omniforms应用程序占了大多数用例 可能有使用自定义模型字段的模型。在这些情况下 表单生成器将无法将模型字段映射到表单字段,并且 您需要使用 OMNI_FORMS_CUSTOM_FIELD_MAPPING设置。
- 映射字典中的每个键都必须是字符串(python 点式导入路径)到模型字段类。
- 映射字典中的每个值都必须是字符串(python 指向omnifield子类。
例如,可以将标记字段映射到omnicharfield模型实例 使用以下配置:
OMNI_FORMS_CUSTOM_FIELD_MAPPING = { 'taggit.TagField': 'omniforms.models.OmniCharField', }
使用此配置,您的模型上的任何taggit.tagfield实例 将在生成的相应表单中表示为charfields 无所不在。
也可以创建自己的omnifield子类,以便在 您的自定义表单生成器。例如:
OMNI_FORMS_CUSTOM_FIELD_MAPPING = { 'taggit.TagField': 'my_app.MySuperOmniField', }
需要注意的是,在 OMNI_FORMS_CUSTOM_FIELD_MAPPING必须是 omniforms.models.OmniField。如果尝试注册字段 不子类omniforms.models.OmniFieldan的处理程序 将引发未正确配置的异常。
摇尾式集成
如果要将表单生成器与https://wagtail.io/集成,则需要添加 omniforms.wagtail应用程序的子模块INSTALLED_APPS设置以及omniforms 模块,例如
INSTALLED_APPS = [ 'omniforms', 'omniforms.wagtail', ... ]
完成后,运行数据库迁移python manage.py migrate,然后离开。
兼容性
django
- django 1.11.x
摇尾巴
- 摇尾1.11.x李>
- 摇尾1.12.x
- 摇尾1.13.x
Python
- python 2.7版
- Python3.4
- Python3.5
- python 3.6
更改日志
- 0.1-初始构建
- 0.2-添加创建任意非模型窗体实例的能力
- 0.3-添加OmniChoiceField和OmniMultipleEchoiceField窗体字段类型和Wagtail集成