Metadata-Version: 1.1
Name: django-rest-coreapi-schema
Version: 0.1.1
Summary: Django restframework custom schema
Home-page: https://github.com/emilioag/django_rest_coreapi_schema
Author: The Python Packaging Authority
Author-email: agonzalez.emilio@gmail.com
License: UNKNOWN
Description: # Django restframework schema
        
        This package is a schema for django restframework.
        
        # How to use
        
        ## Installation
        
        ```bash
        $ pip install django-rest-coreapi-schema
        ```
        
        ```bash
        $ 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.
        
        ```python
        REST_FRAMEWORK = {
            'DEFAULT_SCHEMA_CLASS': 'django_rest_coreapi_schema.schema.CoreAPIAutoSchema',
        }
        ```
        
        ### Restframework docs (urls)
        
        Add to your urls.py the restframework docs
        
        
        ```python
        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
        
        ```python
        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
        
        ```python
        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`
        
        ```python
        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.
        
        ```python
        from django_rest_coreapi_schema.views import DocumentedBaseView
        
        class UserListView(DocumentedBaseView):
            filter_backends = [FilterSerializer]
            filter_fields = ('order', 'username')
        ```
        
        ### Body
        
        Http put, post, etc. body.
        
        ```python
        from django_rest_coreapi_schema.views import DocumentedBaseView
        
        class UserView(DocumentedBaseView):
            body_serializer_class = UserSerializer
        ```
        
        ### Pagination (for large results)
        
        ```python
        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.
Keywords: django restframework schema coreapi swagger
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Documentation
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
