Skip to content

jordaneremieff/aeroplane

Repository files navigation

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

About

Example project using Django and FastAPI together.

Topics

Resources

License

Stars

Watchers

Forks

Languages