django-api-toolkit


Keywords
api, rest, django
License
MIT
Install
pip install django-api-toolkit==0.1.3

Documentation

Very simple app for REST API create via Django Framework

Build Status pypi python license Development status https://coveralls.io/repos/github/hulygun/django-api-toolkit/badge.svg?branch=master

Instalation

pip install django-api-toolkit

Get started

In the first you need initialize your project

project_init <path to project>

For existing projects you should to generate env file

env_generator <path to project>

This script generate base variables that needed to run project. You can also add youself variables in env file You should also change your manage.py. Add APIManager to your file. e.q.

#!/usr/bin/env python
import sys

from api_tools.utils import APIManager

if __name__ == "__main__":
    er = APIManager(__file__, 'cfg.settings')  # path to user project settings
    er.set_app_dir('apps')  # directory for user project applications
    er.apply()  # apply settings

    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

Usage

Structure

├── apps  # dir for your apps
├── cfg  # dir for diferent project configurations
│   ├── settings.py # user project settings
│   └── wsgi.py
└── manage.py

Settings

  • COMMON_APPS - django common applications
  • THIRD_PARTY_APPS - third party applications
  • EXTRA_APPS - applications should be insted before common apps
  • PROJECT_APPS - your project applications

You also can overwrite other standard django settings keys and add yourself variables

Models

All project models should be inherited of RestModel(this standart django abstract model and you can use all capabilities of this)

from api_tools.models import RestModel

class MyModel(RestModel):
    ...

Advanced

RestModel have subclass Rest. This subclass have properties for control your rest models. RestModel also have classmethods for these controls.

RestModel overwrites

RestModel.Rest

queryset: defines queryset as lambda of model.objects
fields: list of allowed fields of model
name: name of viewset
route: route of endpoint

RestModel._rest_serializer

Defines serializer for viewset of model

RestModel._rest_queryset

Defines queryset for viewset

RestModel._rest_endpoint

Set endpoint for your model

FEATURES

CHANGELOG