Skip to content

app-generator/django-dynamic-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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


Dynamic API Features - see video presentation

  • API engine provided by DRF
  • Minimal Configuration (single line in config for each model)
  • Handles any model defined across the project

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


How to use it


Step #1 - Install the package

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

Step #2 - Update Configuration, include the new APPs

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

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

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

DYNAMIC_API = {
    # 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 - 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('', include('django_dyn_api.urls')),     # <-- NEW
    path('login/jwt/', view=obtain_auth_token),   # <-- NEW
]    

Step #6 - 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 Dynamic API - Open-source library provided by AppSeed