Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

JSON:API support for Django REST framework

License

NotificationsYou must be signed in to change notification settings

django-json-api/django-rest-framework-json-api

Repository files navigation

TestsRead the docsPyPi Version

Overview

JSON:API support for Django REST framework

By default, Django REST framework will produce a response like:

{"count":20,"next":"https://example.com/api/1.0/identities/?page=3","previous":"https://example.com/api/1.0/identities/?page=1","results": [{"id":3,"username":"john","full_name":"John Coltrane"    }]}

However, for anidentity model in JSON:API format the response should looklike the following:

{"links": {"prev":"https://example.com/api/1.0/identities","self":"https://example.com/api/1.0/identities?page=2","next":"https://example.com/api/1.0/identities?page=3",    },"data": [{"type":"identities","id":"3","attributes": {"username":"john","full-name":"John Coltrane"        }    }],"meta": {"pagination": {"count":20        }    }}

Goals

As a Django REST framework JSON:API (short DJA) we are trying to address following goals:

  1. Support theJSON:API spec to compliance

  2. Be as compatible withDjango REST framework as possible

    e.g. issues in Django REST framework should be fixed upstream and not worked around in DJA

  3. Have sane defaults to be as easy to pick up as possible

  4. Be solid and tested with good coverage

  5. Be performant

Requirements

  1. Python (3.9, 3.10, 3.11, 3.12, 3.13)
  2. Django (4.2, 5.1, 5.2)
  3. Django REST framework (3.15, 3.16)

Wehighly recommend and only officially support the latest patch release of each Python, Django and REST framework series.

Generally Python and Django series are supported till the official end of life. For Django REST framework the last two series are supported.

For optional dependencies such as Django Filter only the latest release is officially supported even though lower versions should work as well.

Installation

Install usingpip...

$ pip install djangorestframework-jsonapi$# for optional package integrations$ pip install djangorestframework-jsonapi['django-filter']$ pip install djangorestframework-jsonapi['django-polymorphic']$ pip install djangorestframework-jsonapi['openapi']

or from source...

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git$cd django-rest-framework-json-api$ pip install -e.

and addrest_framework_json_api to yourINSTALLED_APPS setting belowrest_framework.

INSTALLED_APPS= [    ...'rest_framework','rest_framework_json_api',    ...]

Running the example app

It is recommended to create a virtualenv for testing. Assuming it is alreadyinstalled and activated:

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git$cd django-rest-framework-json-api$ pip install -Ur requirements.txt$ django-admin migrate --settings=example.settings --pythonpath.$ django-admin loaddata drf_example --settings=example.settings --pythonpath.$ django-admin runserver --settings=example.settings --pythonpath.

Browse to

Usage

rest_framework_json_api assumes you are using class-based views in DjangoREST framework.

Settings

One can either addrest_framework_json_api.parsers.JSONParser andrest_framework_json_api.renderers.JSONRenderer to eachViewSet class, oroverridesettings.REST_FRAMEWORK

REST_FRAMEWORK= {'PAGE_SIZE':10,'EXCEPTION_HANDLER':'rest_framework_json_api.exceptions.exception_handler','DEFAULT_PAGINATION_CLASS':'rest_framework_json_api.pagination.JsonApiPageNumberPagination','DEFAULT_PARSER_CLASSES': ('rest_framework_json_api.parsers.JSONParser','rest_framework.parsers.FormParser','rest_framework.parsers.MultiPartParser'    ),'DEFAULT_RENDERER_CLASSES': ('rest_framework_json_api.renderers.JSONRenderer','rest_framework_json_api.renderers.BrowsableAPIRenderer',    ),'DEFAULT_METADATA_CLASS':'rest_framework_json_api.metadata.JSONAPIMetadata','DEFAULT_FILTER_BACKENDS': ('rest_framework_json_api.filters.QueryParameterValidationFilter','rest_framework_json_api.filters.OrderingFilter','rest_framework_json_api.django_filters.DjangoFilterBackend','rest_framework.filters.SearchFilter',    ),'SEARCH_PARAM':'filter[search]','TEST_REQUEST_RENDERER_CLASSES': ('rest_framework_json_api.renderers.JSONRenderer',    ),'TEST_REQUEST_DEFAULT_FORMAT':'vnd.api+json'}

This package provides much more including automatic inflection of JSON keys, extra top level data (using nestedserializers), relationships, links, paginators, filters, and handy shortcuts.Read more athttps://django-rest-framework-json-api.readthedocs.org/


[8]ページ先頭

©2009-2025 Movatter.jp