跳转到主要内容

Django REST framework的JSON:API规范适配器。

项目描述

Tests Read the docs PyPi Version

概述

JSON:API支持Django REST framework

默认情况下,Django REST framework将生成如下响应

{
    "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"
    }]
}

然而,对于一个JSON:API格式的身份模型,响应应该如下所示

{
    "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
        }
    }
}

目标

作为一个Django REST框架JSON:API(简称DJA),我们试图实现以下目标

  1. 支持JSON:API规范

  2. 尽可能与Django REST框架兼容

    例如,Django REST framework中的问题应该在源头上解决,而不是在DJA中绕过

  3. 提供合理的默认值,使其尽可能易于上手

  4. 稳定且经过良好测试,覆盖率良好

  5. 性能良好

要求

  1. Python(3.8,3.9,3.10,3.11,3.12)

  2. Django(4.2,5.0)

  3. Django REST framework(3.14,3.15)

我们强烈推荐并仅官方支持每个Python、Django和REST框架系列的最新补丁版本。

一般来说,Python和Django系列在官方的生命周期结束前得到支持。对于Django REST framework,支持最新的两个系列。

对于可选依赖项,如Django Filter,仅支持最新的版本,尽管较低版本也应该可以正常工作。

安装

使用pip…安装

$ 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']

或从源码…

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

并将rest_framework_json_api添加到您的INSTALLED_APPS设置中,位于rest_framework下面。

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

运行示例应用程序

建议为测试创建一个虚拟环境。假设它已经安装并激活

$ 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
$ django-admin loaddata drf_example --settings=example.settings
$ django-admin runserver --settings=example.settings

浏览到

用法

rest_framework_json_api假定您正在使用Django REST框架中的基于类的视图。

设置

您可以将rest_framework_json_api.parsers.JSONParserrest_framework_json_api.renderers.JSONRenderer添加到每个ViewSet类中,或者覆盖settings.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'
}

本软件包提供更多功能,包括JSON键的自动屈折、额外的顶级数据(使用嵌套序列化器)、关系、链接、分页器、过滤器以及便捷的快捷方式。更多信息请参阅https://django-rest-framework-json-api.readthedocs.org/

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分布

djangorestframework-jsonapi-7.0.2.tar.gz (130.6 kB 查看哈希值)

上传时间

构建分布

djangorestframework_jsonapi-7.0.2-py2.py3-none-any.whl (354.7 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持