Skip to main content

Django API generator over DRF

Project description

Django API Generator

Simple tool that Generates Secure APIs on top of DRF with minimum effort - actively supported by AppSeed.


Features

  • API engine provided by DRF
  • Secured by JWT Tokens (mutating requests)
  • Minimal Configuration (single line in config for each model)
  • Handles any model defined across the project
  • CRUD access logic:
    • READ is public (all items, get item by ID)
    • Mutating requests are protected by JWT Tokens

Django API Generator - DRF Interface (open-source tool).


How to use it


Step #1 - Install the package

$ pip install django-api-generator
// OR
$ pip install git+https://github.com/app-generator/django-api-generator.git

Step #2 - Update Configuration, include the new APPs

INSTALLED_APPS = [
    'django_api_gen',            # Django API GENERATOR  # <-- NEW
    'rest_framework',            # Include DRF           # <-- NEW 
    'rest_framework.authtoken',  # Include DRF Auth      # <-- NEW   
]

Step #3 - Register the model in core/settings.py (API_GENERATOR section)

This sample code assumes that app1 exists and model Book is defined and migrated.

API_GENERATOR = {
    # pattern: 
    # API_SLUG -> Import_PATH 
    'books'  : "app1.models.Book",
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ],
}

Step #4 - Migrate DB and create the tables used by DRF

$ python manage.py makemigrations
$ python manage.py migrate

Step #5 - Generate API

$ python manage.py generate-api
// OR 
$ python manage.py generate-api -f # supress confirmation (forcing mode)

The code is generated under the api folder in the ROOT of the project. At each iteration the API code is overwritten.


Step #6 - Update routing, include APIs

from django.contrib import admin
from django.urls import path, include                        # <-- UPD: 'include` directive
from rest_framework.authtoken.views import obtain_auth_token # <-- NEW

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api/",   include("api.urls")),        # <-- NEW
    path('login/jwt/', view=obtain_auth_token), # <-- NEW
]    

Step #7 - Use API

If the managed model is Books, the API interface is /api/books/ and all CRUD methods are available.

Note: for mutating requests, the JWT Token is provided by http://localhost:8000/login/jwt/ route (the user should exist).


Django API Generator - POSTMAN Interface (open-source tool).


Links & resources



Django API Generator - Open-source library provided by AppSeed

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-api-generator-1.0.17.tar.gz (10.5 kB view hashes)

Uploaded Source

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