DEV Community

Abhijith Ganesh
Abhijith Ganesh

Posted on

2

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

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay