Introduction à Django¶
Django, qu’est-ce que c’est ?¶
Nous avons jusqu’ici appris des rudiments de Python, mais Python est juste un langage — accompagné de bibliothèques de code assez basiques — permettant de créer des programmes.
La création d’un site web interactif en Python demande un travail considérable, c’est pourquoi nous allons utiliser Django, qui nous fournit un ensemble d’outils, fonctions (comme celles que nous avons étudiées précédemment, mais plus élaborées) et classes qui facilitent beaucoup la création de sites.
Pour mettre en place un site web pleinement interactif, il nous faut ces quelques éléments :
- Un serveur d’application - ici nous allons utiliser Django.
- Des fichiers HTML et CSS, qui vont décrire l’apparence du site.
- Une base de données pour stocker les questions et réponses à nos sondages.
Commençons par créer le serveur d’application.
Création du projet¶
Installation¶
Installez Django en exécutant la commande suivante dans la console : pip install django
.
(workshops) ~$ pip install django
Collecting django
Downloading Django-1.10.6-py2.py3-none-any.whl (6.8MB)
Installing collected packages: django
Successfully installed django-1.10.6
Le paquet adéquat est alors téléchargé depuis PyPI — un dépôt centralisé de paquets de code où sont disponibles de nombreuses bibliothèques.
Démarrage du projet¶
Django fournit le script d’administration django-admin.py
qui
permet entre autres choses de créer l’arborescence initiale du
site. Pour démarrer le nouveau projet, exécutez la commande suivante :
django-admin.py startproject carrots
# Linux
(workshops) ~$ django-admin startproject carrots
(workshops) ~$ tree carrots
carrots/
├── carrots
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 5 files
# Windows
(workshops) C:\Users\Alex> python -m django-admin startproject carrots
(workshops) C:\Users\Alex> tree /f carrots
Folder PATH listing
Volume serial number is 00FA-07FF
C:\USERS\ALEX\DOCUMENTS\CARROTS
│ manage.py
│
└───carrots
settings.py
urls.py
wsgi.py
__init__.py
Structure du projet¶
Le projet que nous venons de créer contient un répertoire carrots
et quelques fichiers de base.
Le fichiers carrots/settings.py
contient des paramètres de
configurations tels que le langage, la connexion à la base de données
ou encore la liste des applications installées dans le projet. Vous
pouvez modifier ce fichier vous-même, il contient un paramétrage par
défaut ainsi que des commentaires explicatifs.
Le fichier manage.py
nous permet d’administrer le site web, créer
ou effacer la base de données, démarrer un simple serveur
d’application, etc... Nous verrons par la suite comment l’utiliser.
Le fichier carrots/urls.py
contient des informations sur les
chemins d’accès aux différentes pages du site.
Les autres fichiers présentent moins d’intérêt dans l’immédiat. De manière générale, on n’a pas besoin de les ouvrir ou de les modifier. Si ces fichiers vous intriguent, n’hésitez pas à rechercher sur Internet des informations supplémentaires à leur sujet.
Réglages de l’application¶
Modifiez ainsi dans le fichier carrots/settings.py
les lignes
suivantes pour régler la langue et le fuseau horaire utilisés par
l’application
LANGUAGE_CODE = 'fr_FR'
TIME_ZONE = 'Europe/Paris'
Pour simplifier les choses nous allons désactiver la gestion avancée
des fuseaux horaires dans la base de données car nous n’en aurons pas
besoin pour ce projet. Localisez le paramètre USE_TZ
et
positionnez-le à False
USE_TZ = False
La section INSTALLED_APPS
contient des informations sur les
applications installées. Un projet Django est en effet composé de
plusieurs applications, comme ici l’application auth
qui sert à
authentifier les utilisateurs, l’application sessions
qui permet
de gérer les sessions des utilisateurs, et ainsi de suite.
Comme vous pouvez le voir, INSTALLED_APPS
est tout simplement un
tuple de noms d’applications. Vous pouvez vérifier que l’interface
d’administration fournie par Django est bien dans la liste. Nous
allons voir plus tard comment l’utiliser.
Base de données¶
Le moment est maintenant venu d’utiliser le fichier manage.py
pour
créer la base de données de notre site. Pour ce faire, nous allons
utiliser l’option migrate
.
Lancez donc la commande python manage.py migrate
depuis le
répertoire du projet :
(workshops) ~$ cd carrots
(workshops) ~/carrots$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
Lancez ensuite la commande python manage.py createsuperuser
pour
créer le compte administrateur :
(workshops) ~/carrots$ python manage.py createsuperuser
Username (leave blank to use 'ubuntu'): admin
Email address: admin@admin.com
Password:
Password (again):
Superuser created successfully.
Vous pouvez laisser le nom d’utilisateur qui vous est proposé et saisir n’importe quelle adresse email.
Retenez bien ces informations, en particulier le nom d’utilisateur et
le mot de passe ; elles vous seront nécessaires pour vous connecter à
l’interface d’administration. Dans l’exemple décit ci-dessus, le nom
d’utilisateur sera admin
. Si le validateur de mot de passe vous
dérange vous pouvez utiliser ubuntu17_
par exemple.
Si vous voulez en apprendre davantage au sujet de manage.py
, vous
pouvez exécuter la commande python manage.py help
.
(workshops) ~/carrots$ python manage.py help
Vous verrez alors la liste de toutes les commandes et options
proposées par manage.py
.
Pour obtenir de l’aide sur l’une de ces commandes, il suffit alors de
taper python manage.py help
, suivi du nom de la commande en
question – par exemple
(workshops) ~/carrots$ python manage.py help migrate
Interface d’administration¶
Nous pouvons maintenant lancer notre application. Démarrez le serveur
en tapant la commande python manage.py runserver
(workshops) ~/carrots$ python manage.py runserver
Validating models...
0 errors found
April 19, 2013 - 20:14:37
Django version 1.8.2, using settings 'carrots.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Notre site web est dès lors disponible à l’adresse http://127.0.0.1:8000/ ou encore http://localhost:8000/.
L’interface d’administration, quant à elle, peut être consultée au
chemin admin/
, c’est pourquoi nous y accédons par l’adresse
http://localhost:8000/admin/.
Créons une nouvelle application pour nos sondages¶
Nous avons jusqu’à présent créé un projet appelé carrots
. Les
projets Django sont divisés en applications qui fournissent chacune
des fonctions spécifiques.
Dans la suite de ce tutoriel, nous allons vous présenter comment créer une application Django. Nous prenons comme exemple la mise en place d’une application de sondage.
N’hésitez pas à suivre le tutoriel en faisant une autre application qui vous ferez plus envie.
Par exemple :
- Recettes de cuisine,
- Galerie de photos,
- Gestion d’articles ou de vidéos favorites,
- Gestion d’une bibliothèque de livre, de vinyles ou de séries TV,
- etc.
Votre mentor vous aidera à adapter le tutoriel à votre application et répondra à vos questions, alors profitez-en :D
Donc nous voulons publier des sondages sur notre site, nous allons
donc créer une application nommée polls
(ce qui signifie
sondages
en anglais — l’anglais étant la langue la plus
fréquemment utilisée au sein des projets informatiques).
Depuis l’invite de commandes, tapez python manage.py startapp polls
(workshops) ~/carrots$ python manage.py startapp polls
(workshops) ~/carrots$ tree -I '__pycache__'
.
├── carrots
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
├── db.sqlite3
├── manage.py
└── polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
2 directories, 14 files
Une fois l’application créée, elle doit être activée dans notre
projet. Ajoutez-la donc dans la section INSTALLED_APPS
du fichier
carrots/settings.py
. Vous devriez parvenir à un résultat similaire
à celui-ci
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
]
Les applications Django sont constituées de plusieurs fichiers :
admin.py
- permet de configurer l’interface d’administration,apps.py
- permet de configurer l’application notamment son nom,models.py
- contient la définition des modèles de la base de données,migrations/
- contient les règles de mise à jour de la base de données lors des changements des models,tests.py
- contient l’ensemble des tests permettant de valider le bon fonctionnement de l’application,views.py
- contient le code des différentes vues de l’application.
En résumé¶
Pour installer Django :
(workshops) ~$ pip install django
Pour créer un projet Django :
# Linux
(workshops) ~$ django-admin.py startproject carrots
# Windows
(workshops) C:\Users\TeddyBear> python -m django-admin startproject carrots
Pour régler le langage et le fuseau horaire, dans le fichier
carrots/settings.py
:
LANGUAGE_CODE = 'fr_FR'
TIME_ZONE = 'Europe/Paris'
USE_TZ = False
Pour créer ou mettre à jour la base de données, il faut lancer cette commande après avoir ajouté un nouveau modèle de données :
(workshops) ~/carrots$ python manage.py migrate
Pour créer un compte administrateur permettant d’accéder à l’interface d’administration :
(workshops) ~/carrots$ python manage.py createsuperuser
Pour démarrer le serveur d’application :
(workshops) ~/carrots$ python manage.py runserver
Pour créer une nouvelle application, par exemple nommée polls
:
(workshops) ~/carrots$ python manage.py startapp polls
N’oubliez alors pas de rajouter cette nouvelle application à la section ``INSTALLED_APPS`` !