Skip to main content

Django restframework custom schema

Project description

Django restframework schema

This package is a schema for django restframework.

How to use

Installation

$ pip install django-rest-coreapi-schema
$ pip install -e git+https://github.com/emilioag/django_rest_coreapi_schema.git#egg=django_rest_coreapi_schema

Configuration

django settings

Add the next configuration in your settings.py file.

REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'django_rest_coreapi_schema.schema.CoreAPIAutoSchema',
}

Restframework docs (urls)

Add to your urls.py the restframework docs

from django.conf.urls import url
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    url(r'^docs/', include_docs_urls(title='My API title', description='API description', public=False)),
]

Create your serializers

from rest_framework import serializers


class UserSerializer(serializers.Serializer):
    email = serializers.CharField(
        required=False,
        help_text="User email")
    address = serializers.CharField(
        required=False,
        help_text="User address")


class FilterSerializer(serializers.Serializer):
    order = serializers.ChoiceField(
        required=False,
        choices=[("asc", "Asc"), ("desc", "desc")],
        help_text="Order")
    username = serializers.CharField(
        required=False,
        help_text="Username pattern")


class PathSerializer(serializers.Serializer):
    username = serializers.CharField(
        required=True,
        help_text="Username")

Create your pagination

from rest_framework.pagination import PageNumberPagination


class LargeResultsSetPagination(PageNumberPagination):
    page_size = 1000
    page_size_query_param = 'page_size'
    max_page_size = 10000

Create your view

Documenting path variables

You have to use the class variable: queryset

from django_rest_coreapi_schema.views import DocumentedBaseView

class UserView(DocumentedBaseView):
    queryset = PathSerializer

Url args

You have to use the class variables: filter_backends and filter_fields

  • filter_backends is a list of serializers which contains all the possible url args.

  • filter_fields is a list of arg names that will be appear in the coreapi documentation.

from django_rest_coreapi_schema.views import DocumentedBaseView

class UserListView(DocumentedBaseView):
    filter_backends = [FilterSerializer]
    filter_fields = ('order', 'username')

Body

Http put, post, etc. body.

from django_rest_coreapi_schema.views import DocumentedBaseView

class UserView(DocumentedBaseView):
    body_serializer_class = UserSerializer

Pagination (for large results)

from django_rest_coreapi_schema.views import DocumentedBaseView

class UserListView(DocumentedBaseView):
    pagination_class = LargeResultsSetPagination

You can see a whole example in examples/restAPI folder inside this repository.

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

django_rest_coreapi_schema-0.1.2.tar.gz (7.6 kB view hashes)

Uploaded Source

Built Distribution

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