DEV Community

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

Posted on

2 2 2 1 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 !

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

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

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay