jozo/djangorestframework-camel-case2


Camel case JSON support for Django REST framework

License: Other

Language: Python

Keywords: camel-case, camelcase, django, django-rest-framework, python


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 Statistics

Sourcerank 5
Repository Size 58.6 KB
Stars 1
Forks 3
Watchers 1
Open issues 1
Dependencies 2
Contributors 15
Tags 3
Created
Last updated
Last pushed

Top Contributors See all

Vitaly Babiy jozo Daniel Gilge Jakob Oswald Tomasz Magulski Md. Al-Amin Danilo Bargen Yavor Atov jacobg Roman Osipenko Ondrej Slinták theotheradam Ümit Seren Dicken Wong James Warren

Packages Referencing this Repo

djangorestframework-camel-case2
Camel case JSON support for Django REST framework
Latest release 0.3.0 - Updated - 1 stars

Recent Tags See all

0.3.0 January 10, 2020
0.2.4 July 23, 2019
0.2.2 September 26, 2018

Something wrong with this page? Make a suggestion

Last synced: 2020-01-10 09:15:15 UTC

Login to resync this repository