跳转到主要内容

Django REST Framework中用于实现HTML JSON Forms规范的实现。

项目描述

html-json-forms

为使用 Django REST Framework 实现了 HTML JSON Form 规范。从 wq.db 中提取以供通用使用。

HTML JSON Forms使用数组风格的命名约定,这使得可以使用常规HTML字段表示复杂嵌套的JSON对象。想法是客户端应用程序(如 wq.app)以及最终浏览器可以解析这些字段并将结构化JSON提交到服务器。为了与旧客户端保持向后兼容,规范建议在服务器上实现回退解析器,以确保旧客户端可以使用传统方法提交表单。这个Python包是该算法的实现。

<!-- Input -->
<form>
  <input name="items[0][name]" value="Example">
  <input name="items[0][count]" value="5">
</form>
// Output
{
    "items": [
        {
            "name": "Example",
            "count": "5"
        }
    ]
}

请注意,HTML JSON Form规范从未最终确定。该实现仍然可以作为通过传统HTML表单表示结构化数据的一种正式方式。

Latest PyPI Release Release Notes License GitHub Stars GitHub Forks GitHub Issues

Travis Build Status Python Support Django Support

用法

html-json-forms 通过PyPI提供

pip3 install html-json-forms

功能性

from html_json_forms import parse_json_form

parse_json_form({
    'items[0][name]': "Example",
    'items[0][count]': "5",
})

DRF集成

要启用Django REST Framework中的HTML JSON Form解析,继承 JSONFormSerializer

from rest_framework import serializers
from html_json_forms.serializers import JSONFormSerializer
from .models import Parent, Child

class ChildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Child

class ParentSerializer(JSONFormSerializer, serializers.ModelSerializer):
    children = ChildSerializer(many=True)
    class Meta:
        model = Parent

# Alternatively you can use the pre-mixed JSONFormModelSerializer:
# class ParentSerializer(JSONFormModelSerializer):
#    ...

请注意,只有顶级序列化器需要拥有 JSONFormSerializer 混合;嵌套序列化器将“直接工作”,就像数据是通过JSON提交的一样。此外,请注意,此模块仅处理嵌套表单数据的处理;您仍需自行确定如何处理写入嵌套模型(除非您使用wq.db模式模块,该模块默认包含可写入的嵌套序列化器)。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

html-json-forms-1.1.1.tar.gz (9.8 kB 查看哈希值)

上传时间

构建分布

html_json_forms-1.1.1-py3-none-any.whl (7.2 kB 查看哈希值)

上传时间 Python 3

由以下机构支持