Deploying your Django Site to Heroku

Heroku is a highly preferred platform to host Simple to Complex Web Applications. It supports a wide array of Frameworks giving you extensive scalability.

Hosting your Web App on Heroku gives you the freedom to perfect your Web App rather than worrying about the platform that it is hosted on.

The below post explores the several steps to follow in hosting your Django Site to Heroku. The list may seem exhaustive at first but will start to become a cake walk once you manage to host your first application.

Applies to Mac: OS X 10 and above

Create a Heroku Account

Visit and create an account

Download the Command Line Interface. Using the command line interface gives you incredible features setup your web application using simple scripts.

Open Terminal and from within your Project Directory,  login to your heroku account using the below command.

$ heroku login

The browser will open a prompt you to login. Successful login will enable you to continue working from the command line.

Create your Heroku Web App

$ heroku create myfirstwebapp

If available, a domain will be created instantly. If already used, it will prompt you to enter an alternate name.

$ heroku open

This will open your newly created web app in the browser

Install gunicorn in your Django Project

Green Unicorn (unicorn) is a Web Server Gateway Interface (WSGI) server implementation that will help you package and run your Python Web Application.

$ pip install gunicorn

Compile List of Libraries

You can package the list of libraries pertaining to your specific Django Project. Compiling a list enables these libraries to also be installed on your heroic app at the time of deployment.

$ pip freeze > requirements.txt

The above command will create a requirements.txt file in the root folder of your Project. Please inspect this file.

If your Project is created in a virtual environment, it would only list Libraries pertaining to the specific project. But if it is created within your computers version of Python, it would list all the libraries. You may then have to manually remove unnecessary libraries from requirements.txt file that do not pertain to your Django Project.

Creating a Process File

A Process File (Procfile) is a mechanism for declaring what commands are run by your web applications containers on the platform. In this case, our platform is heroku. The Procfile can be used to declare multiple process types.

Create a filed named Procfile in the root directory of your Django Project.

web: gunicorn projectname.wsgi
  • web:, this is the process type which will receive web traffic when deployed
  • gunicorn, command needed to run the web process. In short, it allows the python code talk to the web server.
  • projectname, replace this your Django Project Name. This is the name of the directory that contains the file.

Adding the Host

Under add the hostname of your heroku project under ALLOWED_HOSTS


Installing Git

Git is a distributed open source source control (also referred to as “version control”) system commonly used to track and manage file changes. Git is the preferred version control system for Python projects.

Git will aid in managing the file changes in our Local Django Web App and help to write them to our Heroku Site with ease.

Run the below git commands from the Terminal

$ git init

The above command creates an empty local repository within your project folder that will manage all changes to your project files.

But all the files in our Project folder are not required to be pushed to the Live Deployment. For this we will create a file named .gitignore that will address the list of files to be excluded.

Create a file named .gitignore in your Project root directory and copy the contents from the link provide below. When you review the list of files, you will also notice that we ignore the db.sqlite3 as well. The Live App will use the PostgreSQL instead and hence we do not need the SQLite database.

Link to .gitnore list for Python

For Mac machines, add the below line as well to the .gitignore file


Let us now use git to see which files will be added to your Live Deployment (git status).

$ git status
$ git add -A
$ git commit -m "Initial Project Compilation"

The git add command adds a change in the working directory. It basically tells Git that you want to include updates to a particular files or files in the next commit. Option -A, refers to all files.

The git commit command is used to save your changes to the local repository that we had created initially.

Push to Live Deployment

$ git push heroku master

If your application does not use any static files (example: Local  CSS Files, Images etc), it should successfully get deployed without any errors from the local machine.

$ heroku open

Though the deployment was successful without errors, the Web App will return an error as there is no database configured on heroku.

Installing PostgreSQL Database on Mac

Download Link

Instructions for Installation

Kindly ensure that you follow all the 3 Steps in the Installation procedures including adding the $Path to the environment variable.

Creating PostgreSQL Database on heroku

By default, your heroku app comes with a pre-installed PostgreSQL. Running the below command will list the pre-installed database and other pre-instaleld add ons if any.

$ heroku addons

If you wish to create your own database, use the below command

$ heroku addons : create heroku-postgresql : hobby-dev

hobby-dev refers to the Free Plan under your heroku account

$ heroku pg

The above command will display details of your PostgreSQL database.

Seamless Deployment and Development Experience

For a seamless deployment and development experience, you will need to install the django-heroku library to your Django Project.

$ pip install django-heroku

If the above command returns an error, kindly ensure that you have your environment variables correctly configured while installing PostgreSQL.

Updating requirements.txt

Since a new library has now been installed (django-heroku), you must update the requirements.txt file with the new Library Name and Version

$ pip freeze > requirements.txt


Add the below commands to your file

import django_heroku

This will automatically configure Database URL, Allowed Hosts and enable accessibility to your Static Files among other benefits.

Creating Tables on your Live PostgreSQL Database

heroku run python migrate

Deployment Checklist

Django recommends some important measures before your deploy your Web Application. Make sure to deploy most of them if not all the recommendations listed.

Django Deployment Checklist

First Release of your Web Application

$ git status
$ git add -A
$ git commit -m "First Release of Web App"
$ git push update master

Your Django Web Application should now be ready to use and share.