JSON Schema Forms for Django

django-jsonforms的Python项目详细描述


https://travis-ci.org/Aristotle-Metadata-Enterprises/django-jsonforms.svg?branch=master

django jsonforms提供了json编辑器(https://github.com/json-editor/json-editor)的django集成。 提供了一个表单字段,用于呈现由json编辑器创建的动态表单,并将其加载到所提供的模式和选项以及任何初始表单数据中。 该字段可以以与任何其他django字段相同的方式呈现,并在提交时根据json模式验证提交的数据。

安装

用pip安装 pip install django-jsonforms

django_jsonforms添加到已安装的应用程序中

确保在TEMPLATES设置中将app_dirs设置为true。 有关此处模板设置的详细信息:https://docs.djangoproject.com/en/2.0/ref/settings/#templates

要求

通过pip安装包时,将安装python包jsonschema和django。 此外,将呈现表单的页面上还需要jquery。

添加jquery的说明可以在这里找到:https://www.w3schools.com/jquery/jquery_get_started.asp

用法

该字段可以像任何其他django表单字段一样使用,它具有schema和options属性,这些属性可以是python字典,也可以是指向静态文件的路径,如下所示

  • schema参数是字段将使用的json模式
  • options参数传递给json编辑器对象,这里描述这些选项:https://github.com/jdorn/json-editor#options(不使用schema选项)
  • 可选的ajax参数确定是否有文件通过ajax在前端加载或在后端加载并放入html参数(默认为true)

示例:

from django.forms import ModelForm, Form
from django_jsonforms.forms import JSONSchemaField

class RegistrySettingsForm(Form):

    json = JSONSchemaField(
        schema = 'schema/schema.json',
        options = 'schema/options.json'
    )

在本例中,模式文件将位于“static/schema/schema.json”中。创建文件后,您需要运行CollectStatic

要从非静态根目录加载文件,请参见下面的JSONFORMS_SCHEMA_DIR设置

显示所有选项的示例:

class RegistrySettingsForm(Form):

    json = JSONSchemaField(
        schema = 'schema/schema.json',
        options = {"theme": "bootstrap3"},
        ajax = false
    )

因为在这种类型的表单中通常只有一个字段。也可以使用一个名为json的jsonschemafield表单

表单示例:

from django_jsonforms.forms import JSONSchemaForm

form = JSONSchemaForm(schema=... , options=... , ajax=...)

注意:

呈现表单时,不要忘记用模板标记{{form.media}呈现表单媒体。这是字段正常工作所必需的

提交字段时返回的数据采用python字典的形式。这可能需要在存储之前进行转换,具体取决于所使用的模型字段

设置

JSONFORMS_SCHEMA_DIR设置可用于指定从中加载架构的文件目录。此目录需要为窗体提供静态文件才能正常工作

可以将JSONFORMS_SCHEMA_VALIDATE设置设置为false,以禁用提交的json的后端验证。如果绕过前端验证,这将允许用户提交任何json。此设置只能在开发过程中使用

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

推荐PyPI第三方库


热门话题
由于java的原因,maven无法运行代码。lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge   Android项目中的java Creative SDK图像编辑器UI   java如何在Android Studio中使用DataOutputStream上传文件并将其他参数传递到web服务器   java倒计时服务打开时崩溃   java将RubyonRails项目转换为JRubyonRails项目   java我的图库意图是不显示图像?为什么?   java如何在春季启动时跳过mongodb/   java@Autowired在Spring中是如何实现的   甲骨文Akka java。util。同时发生的timeoutexception线程池频繁超时   java maven依赖项对spring启动应用程序有何影响?   java Firestore执行复合查询,未截获事件“已修改”   java ItemStreamException:未能初始化读取器,原因是:IllegalStateException:流已初始化。重新开放前关闭   java将空标记解组到集合的新实例中   使用AspectJ的java新手:无法调用aspect   java查找棋类游戏的所有组合   你为什么要这样做and==与Java中的equals方法不一样吗?   如何对使用JavaUUID的代码进行单元测试?