Les informations de ce cours proviennent en partie de la documentation de Django
https://docs.djangoproject.com/fr/4.1/
Un projet Django est subdivisé en application (ou apps).
Une application est une application Web qui fait quelque chose – par exemple un système de blogue, une base de données publique ou une petite application de sondage.
Un projet est un ensemble de réglages et d’applications pour un site Web particulier. Un projet peut contenir plusieurs applications. Une application peut apparaître dans plusieurs projets.
Exemple: un projet de boutique en ligne pourrait contenir plusieurs apps * le panier d'achat * la présentation des produits * le module de paiement * le module pour administrer les clients * …
Nous allons créer une application pour faire un blogue par exemple.
Pour créer votre application, assurez-vous d’être dans le même répertoire que manage.py
et saisissez cette commande :
$ python manage.py startapp blogue
Cela va créer un dossier blogue
structuré de la façon suivante :
blogue/ ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py
La structure du projet complet doit être maintenant comme ceci:
monsupersite/ ├── blogue │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── manage.py └── monsupersite ├── asgi.py ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-38.pyc │ └── settings.cpython-38.pyc ├── settings.py ├── urls.py └── wsgi.py
Une vue est une fonction Python acceptant une requête web et renvoyant une réponse web. Cette réponse peut contenir le contenu HTML d’une page web, une redirection, une erreur 404, un document JSON, une image… ou vraiment n’importe quoi d’autre. La vue elle-même contient la logique nécessaire pour renvoyer une réponse. Le code d'une vue est placé dans un fichier nommé views.py se trouvant dans un projet ou un répertoire d’application.
Écrivons la première vue. Ouvrez le fichier blogue/views.py
et placez-y le code Python suivant :
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world")
C’est la vue Django la plus simple possible. Pour appeler cette vue, il s’agit de l’associer à une route définie par une URL, et pour cela nous avons besoin d’un URLconf (configuration d'URL). Le code de ce module contient les correspondances entre expressions de chemins d’URL et fonctions Python (vos vues).
Pour créer un URLconf dans le répertoire blogue
, créez un fichier nommé urls.py
. Votre répertoire d’application devrait maintenant ressembler à ceci :
├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py ├── urls.py └── views.py
Dans le fichier blogue/urls.py
, insérez le code suivant :
from django.urls import path # Importe le fichier views depuis le dossier courant from . import views urlpatterns = [ path('', views.index, name='index'), ]
La fonction path() reçoit trois paramètres :
route est une chaîne contenant un motif d’URL. Ici nous avons ''
qui correspond à la route par défaut blogue/
Fonction qui doit être appelée, ici c'est la fonction index
du fichier views
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é permet d’effectuer des changements globaux dans les modèles d’URL de votre projet en ne modifiant qu’un seul fichier.
Quand un utilisateur accède à une page de votre site Django, voici l’algorithme que le système suit pour déterminer quel code Python doit être exécuté :
ROOT_URLCONF
(voir settings.py).django.urls.path()
ou django.urls.re_path()
.
L’étape suivante est de faire pointer la configuration d'url racine vers le module blogue.urls
.
Dans monsupersite/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('blogue/', include('blogue.urls')), path('admin/', admin.site.urls), ]
Il faut toujours utiliser include()
lorsque l’on veut inclure d’autres motifs d’URL. admin.site.urls
est la seule exception à cette règle.
Vous avez maintenant relié une vue index
dans la configuration d’URL. Vérifiez qu’elle fonctionne avec la commande suivante :
$ python manage.py runserver
Ouvrez http://localhost:8000/blogue/ dans votre navigateur et vous devriez voir le texte « Hello, world » qui a été défini dans la vue index
.