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.

Files for django-rest-coreapi-schema, version 0.1.2
Filename, size File type Python version Upload date Hashes
Filename, size django_rest_coreapi_schema-0.1.2-py2-none-any.whl (14.4 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size django_rest_coreapi_schema-0.1.2.tar.gz (7.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page