Metadata-Version: 1.1
Name: html-json-forms
Version: 1.0.0
Summary: Implementation of the HTML JSON Forms spec for use with the Django REST Framework.
Home-page: https://github.com/wq/html-json-forms
Author: S. Andrew Sheppard
Author-email: andrew@wq.io
License: MIT
Description: html-json-forms
        ===============
        
        An implementation of the `HTML JSON
        Form <https://www.w3.org/TR/html-json-forms/>`_ specification for use
        with the `Django REST
        Framework <http://www.django-rest-framework.org/>`_. Extracted from
        `wq.db <https://wq.io/wq.db>`_ for general use.
        
        HTML JSON Forms use an array-style naming convention that makes it
        possible to represent complex nested JSON objects with regular HTML
        fields. The idea is that client applications (such as
        `wq.app <https://wq.io/wq.app>`_) and eventually browsers could parse
        these fields and submit structured JSON to the server. For backwards
        compatibility with older clients, the spec recommends implementing a
        fallback parser on the server to ensure that older clients can submit
        forms using the traditional method. This Python package is an
        implementation of that algorithm.
        
        ::
        
            <!-- Input -->
            <form>
              <input name="items[0][name]" value="Example">
              <input name="items[0][count]" value="5">
            </form>
        
        ::
        
            // Output
            {
                "items": [
                    {
                        "name": "Example",
                        "count": "5"
                    }
                ]
            }
        
        Note that the HTML JSON Form spec was never finalized. The
        implementation is still useful as a formal way of representing
        structured data via traditional HTML forms.
        
        `|Latest PyPI Release| <https://pypi.python.org/pypi/html-json-forms>`_
        `|Release Notes| <https://github.com/wq/html-json-forms/releases>`_
        `|License| <https://github.com/wq/html-json-forms/blob/master/LICENSE>`_
        `|GitHub Stars| <https://github.com/wq/html-json-forms/stargazers>`_
        `|GitHub Forks| <https://github.com/wq/html-json-forms/network>`_
        `|GitHub Issues| <https://github.com/wq/html-json-forms/issues>`_
        
        `|Travis Build Status| <https://travis-ci.org/wq/html-json-forms>`_
        `|Python Support| <https://pypi.python.org/pypi/html-json-forms>`_
        `|Django Support| <https://pypi.python.org/pypi/html-json-forms>`_
        
        Usage
        -----
        
        ``html-json-forms`` is available via PyPI:
        
        ::
        
            pip3 install html-json-forms
        
        Functional
        ~~~~~~~~~~
        
        ::
        
            from html_json_forms import parse_json_form
        
            parse_json_form({
                'items[0][name]': "Example",
                'items[0][count]': "5",
            })
        
        DRF Integration
        ~~~~~~~~~~~~~~~
        
        To enable HTML JSON Form parsing in Django REST Framework, subclass
        ``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):
            #    ...
        
        Note that only the top-level serializer needs to have the
        ``JSONFormSerializer`` mixin; the nested serializers will "just work" as
        if the data had been submitted via JSON. Note further that this module
        only handles processing nested form data; it is still up to you to
        figure out how to handle `writing nested
        models <http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representations>`_
        (unless you are using `wq.db <https://wq.io/wq.db>`_'s
        `patterns <https://wq.io/docs/about-patterns>`_ module, which includes
        writable nested serializers by default).
        
        .. |Latest PyPI
        Release| image:: https://img.shields.io/pypi/v/html-json-forms.svg
        .. |Release
        Notes| image:: https://img.shields.io/github/release/wq/html-json-forms.svg
        .. |License| image:: https://img.shields.io/pypi/l/html-json-forms.svg
        .. |GitHub
        Stars| image:: https://img.shields.io/github/stars/wq/html-json-forms.svg
        .. |GitHub
        Forks| image:: https://img.shields.io/github/forks/wq/html-json-forms.svg
        .. |GitHub
        Issues| image:: https://img.shields.io/github/issues/wq/html-json-forms.svg
        .. |Travis Build
        Status| image:: https://img.shields.io/travis/wq/html-json-forms/master.svg
        .. |Python
        Support| image:: https://img.shields.io/pypi/pyversions/html-json-forms.svg
        .. |Django
        Support| image:: https://img.shields.io/badge/Django-1.8%2C%201.9-blue.svg
        
Platform: UNKNOWN
Classifier: Framework :: Django
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Text Processing :: Markup :: HTML
