141 lines
5.6 KiB
Markdown
141 lines
5.6 KiB
Markdown
---
|
||
title: Découvrir Django
|
||
author: Steve Kossouho
|
||
---
|
||
|
||
# Découvrir Django
|
||
|
||
----
|
||
|
||
## Frameworks web
|
||
|
||
Pourquoi est-ce que les frameworks web existent ?
|
||
|
||
- Avec un langage de programmation, si on a assez d'outils en standard, on pourrait très bien imaginer réinventer la roue;
|
||
- Or, réinventer la roue pour effectuer des tâches communes à de nombreux projets est une perte de temps et d'énergie;
|
||
- Écrire une fois le code, le réutiliser sur plusieurs projets semble beaucoup plus intelligent.
|
||
|
||
----
|
||
|
||
### Que font les frameworks ?
|
||
|
||
- Un framework est une bibliothèque qui propose un plan d'architecture pour réaliser un projet;
|
||
- Le développeur qui utilise un framework va devoir commencer son projet en utilisant une base de code spécifique au framework (des fichiers Python, des fichiers ini ou autres);
|
||
- Ensuite, il va étoffer son projet en utilisant généralement d'autres outils fournis par le framework.
|
||
|
||
----
|
||
|
||
## Exemples de frameworks Python
|
||
|
||

|
||
|
||
----
|
||
|
||
- **Sites web** : [Flask](https://flask.palletsprojects.com/en/2.2.x/)
|
||
- **Sites web** : [Web2py](http://www.web2py.com/init/default/index)
|
||
- **Sites web** : [Turbogears](https://turbogears.org/)
|
||
- **Sites web** : Pyramid (miniframework)
|
||
- **Réseau et programmation asynchrone** : [Twisted](https://twisted.org/)
|
||
|
||
----
|
||
|
||
## Django et Design patterns
|
||
|
||
Les **Design Patterns** sont un ensemble "standardisé" de bonnes pratiques liées au développement de projets ou d'algorithmes. Un design pattern connu au niveau projet est nommé **MVC**, ou **Model, View and Controller**.
|
||
|
||
Le design pattern MVC consiste à découper le développement d'un projet avec des données et une interface graphique en 3 groupes de fichiers de code distincts…
|
||
|
||
----
|
||
|
||
### MVC : Modèle
|
||
|
||
La partie **Modèle** du MVC consiste à écrire dans des fichiers spécifiques, du code destiné à décrire la base de données et les traitements de base qui peuvent être effectués sur celle-ci. En général, la couche d'abstraction des données est décrite en Python sous la forme de classes nommées modèles.
|
||
|
||
----
|
||
|
||
### MVC : Vue
|
||
|
||
La partie **Vue** du MVC consiste, idéalement, à rédiger dans des fichiers spécifiques, le code destiné à afficher du contenu et une interface graphique au client. Autant que possible, dans un univers parfait, on séparerait complètement ce code de celui qui réagit aux interactions de l'utilisateur.
|
||
|
||
----
|
||
|
||
### MVC : Contrôleur
|
||
|
||
La partie **Contrôleur** du MVC est la partie la plus intelligente du lot. C'est celle qui s'occupe de l'intelligence spécifique au projet, et pas au métier décrit dans la partie modèle (elle n'est pas censée être réutilisable ailleurs que dans le projet).
|
||
|
||
Elle peut décrire ce qui se passe quand l'utilisateur valide des formulaires, et appeler le modèle pour modifier les données.
|
||
|
||
----
|
||
|
||
## Présentation de Django
|
||
|
||
Django a été créé en 2003, dans les locaux du **Lawrence Journal-World Newspaper**, lorsque deux développeurs du journal en ligne ont commencé à utiliser le langage Python pour effectuer leurs tâches courantes.
|
||
|
||
Dès 2005, alors que le développement du framework pour leurs besoins avait suffisamment évolué, le projet a été rendu public sous [licence BSD](https://fr.wikipedia.org/wiki/Licence_BSD).
|
||
|
||
À partir de l'année 2009, le framework est devenu un outil de choix pour la création de nombreux projets web. Parmi les acteurs les plus célèbres utilisant Django, on trouve Instagram, Disqus ou encore plusieurs sites de Mozilla.
|
||
|
||
----
|
||
|
||
### Arguments de vente
|
||
|
||
- Prend en charge Python 3.8 et plus récents
|
||
- Le code source est libre, sous licence BSD;
|
||
- Accessible en ligne : [Github Django](https://github.com/django/django)
|
||
- **Attention** : Le copyright appartient à la Django Software Foundation;
|
||
|
||
- Première release en 2005 : [Historique versions](https://en.wikipedia.org/wiki/Django_(web_framework)#Version_history)
|
||
- Version à jour : _5.1.2_ (Octobre 2024)
|
||
- Une nouvelle version mineure tous les 9 mois (18 mois de support);
|
||
- Une nouvelle version majeure toutes les 27 mois;
|
||
- Une version LTS (3 ans de support) à chaque dernière version mineure.
|
||
|
||
----
|
||
|
||
## Environnements de développement intégrés
|
||
|
||
Pour travailler avec Django, il existe plusieurs IDE recommandés :
|
||
|
||
- [JetBrains® PyCharm](https://www.jetbrains.com/fr-fr/pycharm/) (Community ou Professional)
|
||
- [Visual Studio Code](https://code.visualstudio.com/) (avec extensions Python + Django)
|
||
|
||
(PyCharm Community ne prend pas en charge le Javascript ni les outils spécifiques à Django)
|
||
|
||
----
|
||
|
||
## Outils de développement pour la console
|
||
|
||
Il est possible de travailler dans une console Python pour tester certains éléments de code (ex. tester le traitement des données en base de données dans notre projet Django). Certains packages externes Python nous offrent des consoles Python avancées, utilisables dans un terminal.
|
||
|
||
- [iPython](https://ipython.org/) : console interactive, associée à Jupyter.
|
||
- Jupyter : console interactive utilisable depuis un navigateur.
|
||
|
||
----
|
||
|
||
## Installation de Django et paquets annexes
|
||
|
||
Pour installer Django sous Linux, le procédé est assez classique :
|
||
|
||
1. Créer son répertoire de projet
|
||
2. Créer un environnement virtuel Python (via Pycharm)
|
||
3. Installer Django dans l'environnement virtuel
|
||
|
||
----
|
||
|
||
### Installation de Django
|
||
|
||
Installer Django
|
||
|
||
```{.bash .numberLines}
|
||
pip install Django # installe la dernière version
|
||
```
|
||
|
||
. . .
|
||
|
||
Créer son projet en utilisant les outils en ligne de commande de Django
|
||
|
||
```{.bash .numberLines}
|
||
django-admin startproject <nom projet> <répertoire du fichier principal>
|
||
# En général, le répertoire du fichier principal sera ".", le répertoire courant.
|
||
```
|