/aeroplane

Example project using Django and FastAPI together.

Primary LanguagePythonMIT LicenseMIT

aeroplane

An experiment combining Django and FastAPI. Also includes Djantic for converting Django models to Pydantic models and an example serverless configuration.

Screen Shot 2021-04-04 at 3 48 27 pm Screen Shot 2021-04-04 at 3 47 54 pm

Initial setup

Requirements: Python 3.7+

First create a virtual environment and install the dependencies:

python -m .venv venv
. .venv/bin/activate
pip install -r requirements.txt

Note: The mangum requirement is only necessary if deploying to AWS Lambda, and psycopg2-binary is only necessary for Postgres support.

Configuring the database

Any supported Django database configuration can be used, this example provides to examples:

  • To use Postgres, rename .env.dist to .env and set the details for the database. These will be loaded in settings.py.

  • To use SQLite, edit settings.py to uncomment the sqlite3 database configuration.

Then populate the initial database tables using the migration command:

./manage.py migrate

Running the application locally

Run the server locally using uvicorn:

uvicorn aeroplane.main:app --debug

The auto-generated docs proivded by FastAPI are available at http://localhost:8000/docs

The model admin provided by Django is availabe at http://localhost:8000/dj/admin

Deploying to AWS Lambda & API Gateway

This example provides a configuration for using Serverless Framework with Mangum to deploy the ASGI application to AWS Lambda with API Gateway, and it requires a remote Postgres database to be configured in the application settings.

The following steps assumes a remote Postgres database is already setup and Serverless Framework is already installed:

  • Edit the serverless.yml where necessary
  • Add the remote database details to .env
  • Run sls deploy