Introduction (Django)

Django est un framework web haut niveau pour Python, conçu pour faciliter le développement rapide d’applications web sécurisées et maintenables. Contrairement à des micro-frameworks comme Flask ou FastAPI, Django propose une architecture complète “batteries incluses”, incluant ORM, authentification, routage, templates et bien plus.

L’objectif de cette introduction est de fournir une compréhension solide de Django, de ses composants principaux, de son fonctionnement général et de ses bonnes pratiques.


Qu’est-ce que Django ?

Django est un framework web full-stack, ce qui signifie qu’il prend en charge à la fois le backend et certaines parties du frontend. Il est particulièrement adapté pour :


Historique et contexte

Django a été créé en 2003 par les développeurs de la presse locale Lawrence Journal-World et a été publié en open source en 2005. Son objectif initial était de permettre de développer rapidement des sites web pour la presse, avec un haut niveau de productivité et de sécurité.

Django est aujourd’hui utilisé par de grandes entreprises et projets : Instagram, Pinterest, Disqus, Mozilla et bien d’autres. Il reste populaire pour sa stabilité, sa sécurité et son écosystème riche.


Philosophie de Django

Django repose sur plusieurs principes fondamentaux :

  1. DRY (Don’t Repeat Yourself)
    Éviter la duplication du code. Django encourage la réutilisation des composants et l’abstraction des fonctionnalités communes.

  2. Rapid Development
    Faciliter le développement rapide grâce à des outils intégrés, comme l’interface d’administration, les formulaires automatiques et l’ORM.

  3. Sécurité
    Django intègre des protections contre les failles courantes : injection SQL, cross-site scripting (XSS), CSRF, clickjacking.

  4. Scalabilité et maintenabilité
    Django est conçu pour gérer des projets de toutes tailles et permet d’organiser proprement le code grâce au concept d’applications modulaires.


Structure générale d’un projet Django

Un projet Django est organisé autour de projets et applications.



Les composants fondamentaux de Django

Django repose sur plusieurs concepts clés, souvent appelés le modèle MTV (Model-Template-View), proche du modèle MVC classique.

1. Les Modèles (Models)

Les modèles définissent la structure des données et la logique liée à la base de données. Django utilise un ORM qui permet de manipuler la base via des objets Python, sans écrire de SQL brut.

Exemple :

from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)

2. Les Vues (Views)

Les vues définissent la logique métier pour répondre aux requêtes HTTP. Elles peuvent retourner :

Exemple :

from django.http import HttpResponse
from .models import Article
def home(request):
articles = Article.objects.all()
return HttpResponse(f"Il y a {len(articles)} articles publiés.")

Pour les APIs, on peut utiliser JsonResponse ou Django REST Framework.


3. Les Templates

Les templates gèrent l’affichage côté utilisateur. Django utilise un moteur de templates intégré qui permet d’insérer des variables, des boucles et des conditions dans le HTML.

Exemple home.html :

<h1>Articles</h1>
<ul>
{% for article in articles %}
<li>{{ article.title }} - {{ article.published_date }}
</li>
{% endfor %}
</ul>

4. Les URLs et routage

Chaque vue doit être associée à une URL via un fichier urls.py. Exemple :

from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]

Le routage global du projet inclut les applications :

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
]

5. L’interface Admin

Django fournit automatiquement une interface d’administration pour gérer vos données :

from django.contrib import admin
from .models import Article
admin.site.register(Article)

Migrations et base de données

Django utilise les migrations pour gérer les modifications de la base de données :

python manage.py makemigrations # Crée les migrations
python manage.py migrate # Applique les migrations

Serveur de développement

Pour tester l’application, Django inclut un serveur intégré :

python manage.py runserver

Sécurité et bonnes pratiques

Django inclut par défaut de nombreuses protections :


Extensions et écosystème

Django dispose d’un écosystème très riche :


Points clés à retenir


Conclusion

Django est idéal pour construire rapidement des applications web robustes et sécurisées, avec une architecture claire et des outils intégrés. Contrairement à Flask ou FastAPI, il propose un écosystème complet qui permet de gérer tout, de la base de données aux templates HTML, en passant par l’administration et la sécurité.