Écriture de votre première application Django, 1ère partieLien vers cette rubrique
Apprenons avec un exemple.
Tout au long de ce tutoriel, nous vous guiderons dans la création d’une application simple de sondage.
Cela consistera en deux parties :
Un site public qui permet à des gens de voir les sondages et d’y répondre.
Un site d’administration qui permet d’ajouter, de modifier et de supprimer des sondages.
Nous supposerons que Django est déjà installé. Vous pouvez savoir si Django est installé et sa version en exécutant la commande suivante dans un terminal (indiqué par le préfixe $) :
Linux / macOS
$ python -m django --version
Windows
...\> py -m django --version
Si Django est installé, vous devriez voir apparaître la version de l’installation. Dans le cas contraire, vous obtiendrez une erreur disant « No module named django » (aucun module nommé django).
Ce didacticiel est écrit pour Django 2.2, sur une base Python 3.5 (ou plus récent). Si la version de Django ne correspond pas, référez-vous au didacticiel correspondant à votre version de Django en utilisant le sélecteur de version au bas de cette page, ou mettez à jour Django à la version la plus récente. Si vous utilisez une version plus ancienne de Python, consultez Quelle version de Python puis-je utiliser avec Django ? pour trouver la version de Django qui correspond.
Consultez Comment installer Django pour tout conseil sur la manière de supprimer d’anciennes versions de Django pour en installer une nouvelle.
Création d’un projetLien vers cette rubrique
Si c’est la première fois que vous utilisez Django, vous devrez vous occuper de quelques éléments de configuration initiaux. Plus précisément, vous devrez lancer la génération automatique de code qui mettra en place un projet Django – un ensemble de réglages particuliers à une instance de Django, qui comprend la configuration de la base de données, des options spécifiques à Django et d’autres propres à l’application.
Depuis un terminal en ligne de commande, déplacez-vous à l’aide de la commande cd dans un répertoire dans lequel vous souhaitez conserver votre code, puis lancez la commande suivante :
Linux / macOS
$ django-admin startproject mysite
Windows
...\> django-admin startproject mysite
Cela va créer un répertoire mysite dans le répertoire courant. Si cela ne fonctionne pas, consultez Problèmes d’exécution de django-admin.
Voyons ce que startproject a créé :
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
Ces fichiers sont :
Le premier répertoire racine
mysite/n’est qu’un contenant pour votre projet. Son nom n’a pas d’importance pour Django ; vous pouvez le renommer comme vous voulez.manage.py: un utilitaire en ligne de commande qui vous permet d’interagir avec ce projet Django de différentes façons. Vous trouverez toutes les informations nécessaires surmanage.pydans django-admin et manage.py.Le sous-répertoire
mysite/correspond au paquet Python effectif de votre projet. C’est le nom du paquet Python que vous devrez utiliser pour importer ce qu’il contient (par ex.mysite.urls).mysite/__init__.py: un fichier vide qui indique à Python que ce répertoire doit être considéré comme un paquet. Si vous êtes débutant en Python, lisez les informations sur les paquets (en) dans la documentation officielle de Python.mysite/settings.py: réglages et configuration de ce projet Django. Les réglages de Django vous apprendra tout sur le fonctionnement des réglages.mysite/urls.py: les déclarations des URL de ce projet Django, une sorte de « table des matières » de votre site Django. Vous pouvez en lire plus sur les URL dans Distribution des URL.mysite/wsgi.py: un point d’entrée pour les serveurs Web compatibles WSGI pour déployer votre projet. Voir Comment déployer avec WSGI pour plus de détails.
Le serveur de développementLien vers cette rubrique
Vérifions que votre projet Django fonctionne. Déplacez-vous dans le répertoire mysite si ce n’est pas déjà fait, et lancez les commandes suivantes :
Linux / macOS
$ python manage.py runserver
Windows
...\> py manage.py runserver
Vous verrez les messages suivants défiler en ligne de commande :
Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. 09 août 2026 - 15:50:53 Django version 2.2, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Vous avez démarré le serveur de développement de Django, un serveur Web léger entièrement écrit en Python. Nous l’avons inclus avec Django de façon à vous permettre de développer rapidement, sans avoir à vous occuper de la configuration d’un serveur de production – comme Apache – tant que vous n’en avez pas besoin.
C’est le moment de noter soigneusement ceci : n’utilisez jamais ce serveur pour quoi que ce soit qui s’approche d’un environnement de production. Il est fait seulement pour tester votre travail pendant le développement (notre métier est le développement d’environnements Web, pas de serveurs Web).
Maintenant que le serveur tourne, allez à l’adresse http://127.0.0.1:8000 avec votre navigateur Web. Vous verrez une page avec le message « Félicitations ! » ainsi qu’une fusée qui décolle. Ça marche !
Création de l’application PollsLien vers cette rubrique
Maintenant que votre environnement – un « projet » – est en place, vous êtes prêt à commencer à travailler.
Chaque application que vous écrivez avec Django est en fait un paquet Python qui respecte certaines conventions. Django est livré avec un utilitaire qui génère automatiquement la structure des répertoires de base d’une application, ce qui vous permet de vous concentrer sur l’écriture du code, plutôt que sur la création de répertoires.
Vos applications peuvent se trouver à n’importe quel endroit de votre chemin de recherche Python. Dans ce didacticiel, nous allons créer une application de sondage au même niveau que le fichier manage.py pour qu’elle puisse être importée comme module de premier niveau plutôt que comme sous-module de monsite.
Pour créer votre application, assurez-vous d’être dans le même répertoire que manage.py et saisissez cette commande :
Linux / macOS
$ python manage.py startapp polls
Windows
...\> py manage.py startapp polls
Cela va créer un répertoire polls, qui est structuré de la façon suivante :
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Cette structure de répertoire accueillera l’application de sondage.
Écriture d’une première vueLien vers cette rubrique
Écrivons la première vue. Ouvrez le fichier polls/views.py et placez-y le code Python suivant :
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
C’est la vue Django la plus simple possible. Pour appeler cette vue, il s’agit de l’associer à une URL, et pour cela nous avons besoin d’un URLconf.
Pour créer un URLconf dans le répertoire polls, créez un fichier nommé urls.py. Votre répertoire d’application devrait maintenant ressembler à ceci :
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
Dans le fichier polls/urls.py, insérez le code suivant :
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
L’étape suivante est de faire pointer la configuration d””URL racine vers le module polls.urls. Dans mysite/urls.py, ajoutez une importation django.urls.include et insérez un appel include() dans la liste urlpatterns, ce qui donnera :
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
La fonction include() permet de référencer d’autres configurations d’URL. Quand Django rencontre un include(), il tronque le bout d’URL qui correspondait jusque là et passe la chaîne de caractères restante à la configuration d’URL incluse pour continuer le traitement.
L’idée derrière include() est de faciliter la connexion d’URL. Comme l’application de sondages possède son propre URLconf (polls/urls.py), ses URL peuvent être injectés sous « /polls/ », sous « /fun_polls/ » ou sous « /content/polls/ » ou tout autre chemin racine sans que cela change quoi que ce soit au fonctionnement de l’application.
Vous avez maintenant relié une vue index dans la configuration d’URL. Vérifiez qu’elle fonctionne avec la commande suivante :
Linux / macOS
$ python manage.py runserver
Windows
...\> py manage.py runserver
Ouvrez http://localhost:8000/polls/ dans votre navigateur et vous devriez voir le texte « Hello, world. You’re at the polls index. » qui a été défini dans la vue index.
La fonction path() reçoit quatre paramètres, dont deux sont obligatoires : route et view, et deux facultatifs : kwargs et name. À ce stade, il est intéressant d’examiner le rôle de chacun de ces paramètres.
Paramètre de path() : routeLien vers cette rubrique
route est une chaîne contenant un motif d’URL. Lorsqu’il traite une requête, Django commence par le premier motif dans urlpatterns puis continue de parcourir la liste en comparant l’URL reçue avec chaque motif jusqu’à ce qu’il en trouve un qui correspond.
Les motifs ne cherchent pas dans les paramètres GET et POST, ni dans le nom de domaine. Par exemple, dans une requête vers https://www.example.com/myapp/, l’URLconf va chercher myapp/. Dans une requête vers https://www.example.com/myapp/?page=3, l’URLconf va aussi chercher myapp/.
Paramètre de path() : viewLien vers cette rubrique
Lorsque Django trouve un motif correspondant, il appelle la fonction de vue spécifiée, avec un objet HttpRequest comme premier paramètre et toutes les valeurs « capturées » par la route sous forme de paramètres nommés. Nous montrerons cela par un exemple un peu plus loin.
Paramètre de path() : kwargsLien vers cette rubrique
Des paramètres nommés arbitraires peuvent être transmis dans un dictionnaire vers la vue cible. Nous n’allons pas exploiter cette fonctionnalité dans ce tutoriel.
Paramètre de path() : nameLien vers cette rubrique
Le nommage des URL permet de les référencer de manière non ambiguë depuis d’autres portions de code Django, en particulier depuis les gabarits. Cette fonctionnalité puissante permet d’effectuer des changements globaux dans les modèles d’URL de votre projet en ne modifiant qu’un seul fichier.
Lorsque vous serez familiarisé avec le flux de base des requêtes et réponses, lisez la partie 2 de ce tutoriel pour commencer de travailler avec la base de données.