一个简单的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}中的modelonemodeltwo模型$ 要使用的应用程序。

OMNI_FORMS_CONTENT_TYPES = [
    {'app_label': 'foo'},
    {'app_label': 'bar', 'model': 'modelone'},
    {'app_label': 'bar', 'model': 'modeltwo'},
]

如果未定义OMNI_FORMS_CONTENT_TYPES设置,则它将 默认为NoneOMNI_FORMS_EXCLUDED_CONTENT_TYPES 将改为使用设置(默认值或其他值)。

Omni_forms_excluded_content_type

可以防止为特定的 使用^{tt13}的应用程序或特定模型$ 设置。

例如:

以下配置将阻止为any创建窗体 应用程序foo中的模型以及modelonemodeltwo个模型位于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集成

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ProcessBuilder在使用多个参数时运行不正常   java如何使用Spring数据ORM/JPA创建EntityManagerFactory?   将Velocity宏转换为Java指令   internet上的Java TCP/IP服务器客户端通信   java为什么JDK 8允许一个局部内部类(在方法内部)访问封闭方法的非最终局部变量?   基于Java的比率算法   java应用程序在选择列表首选项时出错   java保存对象以供以后使用   java如何使用MySQL JDBC驱动程序连接Android和MySQL   java Zipkin可以用于控制台应用程序   java单击刷新Servlet页面显示重复内容   java如何递归地反转字符串数组?   java如何使用inputStream作为outputStream的文本?   java扩展令牌选择操作符   java在映射中使用通用枚举类   arraylist如何使用JAVA流从对象列表中查找平均值   windows将FileInputStream和FileOutputStream传递给ffmpeg进行转码(使用JAVEJava音频视频编码)   java Ant脚本在执行CVS签出后找不到目标   重复值情况下的java插入排序,双链表ADT   java如何在Accumulo中获取数据库查询计数