Skip to main content

Camel case JSON support for Django REST framework

Project description

Django REST Framework JSON CamelCase

Build Status PyPI

Camel case JSON support for Django REST framework.

Compatible with:

  • Python: Python 3.5+
  • Django: 2.2, 3.0+
  • Django REST framework: 3.9, 3.10, 3.11

Note: This is a replacement for djangorestframework-camel-case which seems currently unmaintained.

Installation

At the command line::

$ pip install djangorestframework-camel-case2

Add the render and parser to your django settings file.

REST_FRAMEWORK = {

    'DEFAULT_RENDERER_CLASSES': (
        'djangorestframework_camel_case2.render.CamelCaseJSONRenderer',
        # Any other renders
    ),

    'DEFAULT_PARSER_CLASSES': (
        'djangorestframework_camel_case2.parser.CamelCaseJSONParser',
        # Any other parsers
    ),
}

Swapping Renderer

By default the package uses rest_framework.renderers.JSONRenderer. If you want to use another renderer (the only possible alternative is rest_framework.renderers.UnicodeJSONRenderer, only available in DRF < 3.0), you must specify it in your django settings file.

# ...
JSON_CAMEL_CASE = {
    'RENDERER_CLASS': 'rest_framework.renderers.UnicodeJSONRenderer'
}
# ...

Underscoreize Options

As raised in https://github.com/krasa/StringManipulation/issues/8#issuecomment-121203018 there are two conventions of snake case.

# Case 1 (Package default)
v2Counter -> v_2_counter
fooBar2 -> foo_bar_2

# Case 2
v2Counter -> v2_counter
fooBar2 -> foo_bar2

By default, the package uses the first case. To use the second case, specify it in your django settings file.

REST_FRAMEWORK = {
    # ...
    'JSON_UNDERSCOREIZE': {
        'no_underscore_before_number': True,
    },
    # ...
}

Alternatively, you can change this behavior on a class level by setting json_underscoreize:

from djangorestframework_camel_case2.parser import CamelCaseJSONParser
from rest_framework.generics import CreateAPIView

class NoUnderscoreBeforeNumberCamelCaseJSONParser(CamelCaseJSONParser):
    json_underscoreize = {'no_underscore_before_number': True}
    
class MyView(CreateAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MySerializer
    parser_classes = (NoUnderscoreBeforeNumberCamelCaseJSONParser,)

Running Tests

To run the current test suite, execute the following from the root of the project

poetry run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djangorestframework-camel-case2-0.3.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file djangorestframework-camel-case2-0.3.0.tar.gz.

File metadata

File hashes

Hashes for djangorestframework-camel-case2-0.3.0.tar.gz
Algorithm Hash digest
SHA256 91e7c3b11f4f8a4b52aecd6b06efa144d31018d3148b9770dd8ef8ef8564eca1
MD5 6699889b852e8a0beeed4b0c7732b4fc
BLAKE2b-256 4befd6dfbe226fa9c16d3bc7973357ac85b6acedc11ff523d1d63825d67662bc

See more details on using hashes here.

File details

Details for the file djangorestframework_camel_case2-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for djangorestframework_camel_case2-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 140607f245255a22b84473a8f112a7f2c46aecce87a49d14fe1eef38cb26db64
MD5 76cfd723235d1d73c58bf9d8b18df17a
BLAKE2b-256 e445f5f04dd2ad0633c3a7eba1251e968c8259f2975a1833ae6cda8b530f044d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page