aeroplane
aeroplane copied to clipboard
Example project using Django and FastAPI together.
aeroplane
An experiment combining Django and FastAPI. Also includes Djantic for converting Django models to Pydantic models and an example serverless configuration.
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 insettings.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