django-jsonforms中如何移除JSONSchemaForm字段的Json:标签?
移除django-jsonforms默认「Json:」标签解决方案
你之前尝试的修改字段label、在Schema中加label配置、更换widget不生效,核心原因是这个「Json:」标签既不来自Django表单字段的label属性,也不读取Schema配置,是组件渲染逻辑里的默认兜底文本,官方文档确实没有标注相关配置,下面两种方案都可以实现需求:
- 方案1:给Widget传label参数(零模板修改,推荐)
翻组件源码可以确认,JSONWidget初始化时支持接收label参数,优先级高于默认硬编码文本,定义表单字段时直接给widget传空字符串即可完全隐藏该标签,示例代码:
from django import forms from jsonforms.forms import JSONSchemaField from jsonforms.widgets import JSONWidget # 修正后的JSON Schema(注意原配置数组子项的键写错了,JSON Schema规范用items而非products,会导致数组渲染异常) product_schema = { "title": "Product", "description": "A product", "type": "object", "properties": { "Products": { "type": "array", "items": { "type": "string" }, "minItems": 0, "maxItems": 5, } } } class ProductForm(forms.Form): form = JSONSchemaField( schema=product_schema, # 核心配置:传空字符串隐藏默认标签,需要自定义文本直接填对应值即可 widget=JSONWidget(label="") )
- 方案2:覆写渲染模板(适合旧版本库/需要深度定制样式场景)
如果你使用的django-jsonforms版本较旧,不支持widget传label参数,可以通过覆写模板实现:
- 找到python环境中django-jsonforms安装目录下的
templates/jsonforms/json_field.html模板文件 - 将该文件复制到你自身项目的模板目录,保持路径为
templates/jsonforms/json_field.html - 打开复制后的模板文件,找到
<legend>Json:</legend>代码段,直接删除该行或修改为你需要的文本即可
注意:使用该方案需要保证你自身项目的app在
settings.py的INSTALLED_APPS配置中排在jsonforms前面,确保Django优先加载你自定义的模板。
内容的提问来源于stack exchange,提问作者viciousvegs
相关产品推荐
相关产品推荐

