DEV Community

Abhijith Ganesh
Abhijith Ganesh

Posted on

How to deploy Django to Heroku

Introduction:

Most of you would’ve already seen n number of blogs on how to deploy Django projects to Heroku but in this article, I shall explain in simple words in a sequential manner without much confusion.

We shall consider a simple project without any additional boiler plate code. I shall call the project as mysite and app as appOne.

I shall start from scratch and attach this repository at the end of this tutorial.

For Linux Users:

python3 -m venv Environ
source Environ/bin/activate
python -m pip install django
Enter fullscreen mode Exit fullscreen mode

For Windows Users:

python -m venv Environ
cd Environ/Scripts/
activate
cd ../../
Enter fullscreen mode Exit fullscreen mode

Configuring Django

Continuing this:

django-admin startproject mysite
cd mysite
django-admin startapp appOne
Enter fullscreen mode Exit fullscreen mode

This is how your tree will look after running those commands successfully :

mysite
    │   manage.py
    │
    ├───appOne
    │   │   admin.py
    │   │   apps.py
    │   │   models.py
    │   │   tests.py
    │   │   views.py
    │   │   __init__.py
    │   │
    │   └───migrations
    │           __init__.py
    │
    └───mysite
            asgi.py
            settings.py
            urls.py
            wsgi.py
            __init__.py
Enter fullscreen mode Exit fullscreen mode

Steps to launch and deploy the project to Heroku:

Step One:

from pathlib import Path
import os

BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get('SECRET_KEY')
DEBUG = os.environ.get('DEBUG')
ALLOWED_HOSTS = []
Enter fullscreen mode Exit fullscreen mode

Once you've created the Django project, please add the security key to your Environment secrets and Config Vars.

alt text

Step Two:

We don’t have any static files for this project, but if needed you can use whitenoise.

Heroku's guide on whitenoise

MIDDLEWARE  = [
   'whitenoise.middleware.WhiteNoiseMiddleware',
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Enter fullscreen mode Exit fullscreen mode

In config vars set DEBUG_COLLECTSTATIC = 1.

Step Three:

After configuring the project, we'll now be freezing the requirements and Procfile

pip freeze>requirements.txt
Enter fullscreen mode Exit fullscreen mode
Procfile:
web: manage.py makemigrations && manage.py migrate
web: gunicorn mysite.wsgi:app
Enter fullscreen mode Exit fullscreen mode

Step Four:

Commit all these files to your git repository and push it to your source .
I’ll be using GitHub for this tutorial

git init . 
git add . 
git commit -m  “Initial Commit🚀”
git remote add origin <link>
git push -u origin master
Enter fullscreen mode Exit fullscreen mode

Step Five:

Go to dashboard and deploy

alt text

It should be working fine! Feel free to reach out if there are any issues.

View the deployment here at: https://testing-repos.herokuapp.com/
Repository at: https://github.com/AbhijithGanesh/Tutorial-for-Heroku

Discussion (0)