声明式JSON表单渲染:从Django表单直接生成前端JSON Schema
教会你如何将Django Form类自动转换为JSON Schema和UISchema,结合前端库自动生成表单界面,实现后端定义表单、前端无需硬编码的声明式架构。 · 难度:入门 · +10XP
声明式JSON表单渲染
通过重写BaseForm.as_json()方法,将字段定义、验证规则、布局信息转换为标准JSON Schema。每个字段生成对应的type、required、enum等属性。同时支持自定义UISchema(如widget类型、placeholder)。前端使用react-jsonschema-form或vue-form-json渲染,提交后Django直接验证JSON数据。
from django import forms
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=50)
email = forms.EmailField()
age = forms.IntegerField(min_value=18)
def as_json_schema(self):
schema = {'type': 'object', 'properties': {}}
for field in self:
schema['properties'][field.name] = {
'type': 'string' if isinstance(field.field, forms.CharField) else 'integer',
'title': field.label
}
return schema