JSON Schema Forms for Django
django-jsonforms的Python项目详细描述
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。此设置只能在开发过程中使用