Camel case JSON support for Django REST framework.
Project description
Django REST Framework JSON CamelCase
Camel case JSON support for Django REST framework.
Installation
At the command line:
$ pip install djangorestframework-camel-case
Add the render and parser to your django settings file.
# ...
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
'djangorestframework_camel_case.render.CamelCaseBrowsableAPIRenderer',
# Any other renders
),
'DEFAULT_PARSER_CLASSES': (
# If you use MultiPartFormParser or FormParser, we also have a camel case version
'djangorestframework_camel_case.parser.CamelCaseFormParser',
'djangorestframework_camel_case.parser.CamelCaseMultiPartParser',
'djangorestframework_camel_case.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_case.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 he project:
$ python -m unittest discover
License
Free software: BSD license
History
1.1.1 (2019-09-09)
Add json_underscoreize as CamelCaseJSONParser class attribute #44
1.1.0 (2019-09-09)
Long awaited stable release:
Changes can be viewed: https://github.com/vbabiy/djangorestframework-camel-case/compare/e6db468…39ae6bb
0.1.0 (2013-12-20)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for djangorestframework-camel-case-1.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fb06663a8e1acf84e59ed1219ce7d33957801e2acd951c273e6389efd4b0c31 |
|
MD5 | c80ce19fed202bf90330d301e011b8ed |
|
BLAKE2b-256 | 61bd6834798850df97742f2d773b28e7c7452e79f44f437990e49364a3d6afb1 |
Hashes for djangorestframework_camel_case-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcc831992b724ee634440eb3837d2a48f9af443e0d1280b3f9e018eb514ac9ed |
|
MD5 | 09eec1ecdb6f517e6295a33d07ea21ab |
|
BLAKE2b-256 | 1567561fda9bd35e46bbba5e14502ce1664742d91feb44da291b0e8f4150b0d3 |