用于Django的JSON Schema表单
项目描述
django-jsonforms提供了json-editor(https://github.com/json-editor/json-editor)的Django集成。提供了一个表单字段,该字段渲染由json-editor创建的动态表单,加载提供的模式和选项以及任何初始表单数据。该字段可以像其他Django字段一样渲染,并在提交时验证提交的数据是否符合您的JSON模式。
安装
使用pip安装 pip install django-jsonforms
将 django_jsonforms 添加到您的 INSTALLED_APPS
确保您已将 APP_DIRS 设置为 True 在您的 TEMPLATES 设置中。更多关于模板设置的信息,请参阅: https://docs.django.ac.cn/en/2.0/ref/settings/#templates
需求
页面需要渲染表单时需要 jQuery。
用法
该字段可以像任何其他Django表单字段一样使用,它具有模式和选项属性,可以是Python字典或指向静态文件的路径,如下所示
模式参数是字段将使用的JSON模式
选项参数传递给json-editor对象,这些选项在此处有描述: https://github.com/jdorn/json-editor#options(模式选项未使用)
可选的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
要从除STATIC_ROOT之外的其他目录加载文件,请参阅下面的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。此设置仅在开发期间使用
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。