DEV Community

Cover image for Django + Heroku : Guide Complet de Déploiement 2025 🚀
Fabrice
Fabrice

Posted on

1

Django + Heroku : Guide Complet de Déploiement 2025 🚀

Déployer une application Django sur Heroku peut sembler intimidant au premier abord. Dans ce guide complet, je vais vous montrer pas à pas comment déployer votre application Django et configurer votre base de données PostgreSQL sur Heroku.

🎯 Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Python 3.x installĂ©
  • Git installĂ©
  • Un compte Heroku
  • Une application Django fonctionnelle en local
  • Heroku CLI installĂ©

📦 Préparation du Projet

1. Structure du Projet

Votre projet devrait ressembler Ă  ceci :

my_project/
├── manage.py
├── my_project/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt
└── Procfile
Enter fullscreen mode Exit fullscreen mode

2. Configuration des DĂ©pendances

Créez votre requirements.txt :

pip freeze > requirements.txt
Enter fullscreen mode Exit fullscreen mode

Ajoutez ces dépendances essentielles :

django
gunicorn
psycopg2-binary
django-environ
whitenoise
dj-database-url
Enter fullscreen mode Exit fullscreen mode

3. Configuration de Django pour Heroku

Modifiez votre settings.py :

import os
import dj_database_url
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('SECRET_KEY', 'votre-clé-secrète-par-défaut')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.environ.get('DEBUG', 'True') == 'True'

ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')

# Database
DATABASES = {
    'default': dj_database_url.config(
        default=os.environ.get('DATABASE_URL', 'sqlite:///db.sqlite3'),
        conn_max_age=600
    )
}

# Static files
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

# Middleware
MIDDLEWARE = [
    # ...
    'whitenoise.middleware.WhiteNoiseMiddleware',
]
Enter fullscreen mode Exit fullscreen mode

4. Création du Procfile

Créez un fichier Procfile à la racine avec contenue :

web: gunicorn my_project.wsgi
Enter fullscreen mode Exit fullscreen mode

🚀 Déploiement sur Heroku

1. Création de l'Application

heroku create mon-app-django
Enter fullscreen mode Exit fullscreen mode

2. Configuration des Variables d'Environnement

heroku config:set SECRET_KEY='votre-clé-secrète'
heroku config:set DEBUG='False'
heroku config:set ALLOWED_HOSTS='.herokuapp.com'
Enter fullscreen mode Exit fullscreen mode

3. Base de Données PostgreSQL

heroku addons:create heroku-postgresql:hobby-dev
Enter fullscreen mode Exit fullscreen mode

4. DĂ©ploiement

git add .
git commit -m "Prêt pour le déploiement"
git push heroku main
Enter fullscreen mode Exit fullscreen mode

📺 Vidéo Tutorial
Pour une démonstration en direct de ce processus, consultez ma vidéo YouTube :


🤝 Contribution
N'hésitez pas à contribuer à ce guide en ouvrant une PR sur Developpeurtaf.
đź’¬ Discussion
Avez-vous des questions ? Des suggestions ? Laissez un commentaire ci-dessous !

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

đź‘‹ Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay