Using the django-admin startporject --template flag, I wanted to create my projects with a lot of the tedious work already done.

I create a project and then find and replace the project name with the django context keyword {{ project_name }}. I use the same keyword in my makefile, environment variables, dockerfile, etc.

When I run the startproject command with the --template flag, django copies all the files in the directory of my template. This includes a test folder, api route folders, and makes a copy of the remaining files under the folder.

I then do a find and replace to replace {{ project_name }} in the non django files which aren’t parsed by django-admin startproject and I’m ready to go.

I generate a secret key using:

python -c 'from django.core.management.utils import get_random_secret_key; \
            print(get_random_secret_key())'

And insert it into my example.env file, before running:

# Edit the example.env as needed
cp example.env .env

An example of a setup, with redis, celery, postgres, and api ready is on my github page.

#source BugBytes - Django - Using Startproject and StartApp Templates