L'objectif de ce chapitre est de configurer notre projet avec Flask. Commençons par l'installer !
Installez votre projet Flask
Flask est un module, son installation est donc assez standard.
Commencez par créer un environnement virtuel dans lequel vous installerez le module flask
avec pip
.
$ virtualenv env -p python3
$ . env/bin/activate
(env) $ pip install flask
Sur Windows, une commande alternative pour créer un environnement virtuel serait souvent :
python -m venv env
Maintenant, créez un fichier views.py
et collez le code suivant :
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello world !"
if __name__ == "__main__":
app.run()
Afin de vérifier que Flask fonctionne, exécutez le script suivant :
$ python views.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Python vous informe que le serveur est lancé ! Il attend les requêtes. Ouvrez un navigateur et entrez dans le champ des adresses http://127.0.0.1:5000/
. Vous verrez "Hello world !" en haut à gauche de votre page. Bravo, tout fonctionne !
Organisez votre projet
Et maintenant quoi ? C'est bien beau mais ce ne serait pas plus utile d'afficher le contenu de la page index.html
?
Nous y venons. Avant de faire cela, nous devons organiser notre projet un peu différemment.
Flask, contrairement à d'autres frameworks, n'impose pas de structure. Vous pouvez tout à fait développer une application entière sur un seul et même fichier. La liberté, la vraie ! Mais encore une fois, ce n'est pas parce que vous pouvez le faire que vous devez le faire. Suivre certaines conventions nous sera très utile par la suite. Les voici :
les feuilles de style, scripts, images et autres éléments qui ne seront jamais générés dynamiquement doivent être dans le dossier
static
,les fichiers HTML doivent être dans le dossier
templates
,les tests doivent être dans le dossier
tests
,le fichier
views.py
contient les différentes routes de l'application (nous y reviendrons).
Arrêtez le serveur et créez donc les dossiers suivants : templates
et tests
.
Normalement, votre dossier de travail devrait actuellement ressembler à ceci :
$ ls
env index.html result.html static templates tests views.py
C'est un peu le bazar, vous ne trouvez pas ? Je vous propose de regrouper les fichiers de notre application Facebook sous un seul et même dossier, fbapp
, et de le transformer en paquet. Nous pourrons ainsi, plus tard, créer d'autres applications qui cohabiteront ensemble.
Déplacez tous les fichiers et dossiers (sauf, évidemment, celui de votre environnement virtuel) dans fbapp
.
Déplacez index.html
et result.html
dans le dossier templates
car là est leur place.
Puis créez un fichier __init__.py
dans fbapp
et un fichier run.py
à la racine du projet. C'est ce dernier script que nous utiliserons pour lancer le projet.
Ouvrez-le et ajoutez les lignes suivantes :
run.py
#! /usr/bin/env python
from fbapp import app
if __name__ == "__main__":
app.run(debug=True)
Puisque nous importons app
, le fichier __init__.py
doit contenir cet objet. Ouvrez-le et ajoutez les lignes suivantes :
from flask import Flask
from .views import app
Parfait ! Si vous lancez le script run.py
, vous constaterez que tout fonctionne toujours :
$ python run.py * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 150-335-910
Créez le fichier de configuration
Tout projet web qui grandit est amené à travailler avec des variables que nous utiliserons un peu partout dans le projet. Par exemple, le chiffre donné par Facebook pour identifier notre application ou l'emplacement de la base de données. Par convention, ces variables sont dans le fichier config.py
.
Créons-le tout de suite ! Puis ouvrons-le pour ajouter les variables.
# To generate a new secret key:
# >>> import random, string
# >>> "".join([random.choice(string.printable) for _ in range(24)])
SECRET_KEY = "#d#JCqTTW\nilK\\7m\x0bp#\tj~#H"
FB_APP_ID = 1200420960103822
Qu'est-ce que cette "SECRET_KEY" ? Est-elle obligatoire ?
La "Secret Key", clé secrète en français, permet de générer toutes les données chiffrées. Par exemple, elle permet de générer les cookies. Elle est donc obligatoire ! Il faut également garder cette clé de manière confidentielle.
Copiez le code et collez-le dans config.py
. Flask vous permet d'importer toutes les variables en une fois dans votre projet en utilisant la méthode config.from_object(file_name)
. Ouvrez views.py
:
views.py
# Config options - Make sure you created a 'config.py' file.
app.config.from_object('config')
# To get one variable, tape app.config['MY_VARIABLE']
Bravo !
Récupérez le code de ce chapitre
Retrouvez le code de ce chapitre à cette adresse.
En résumé
Flask est disponible via le gestionnaire de paquets Python, PyPI
Pour voir votre application, Flask vient avec un serveur de développement accessible à l’adresse locale
http://127.0.0.1:5000/
Il est recommandé de suivre une structure de projet en séparant les vues, les templates, les tests, les fichiers statiques et les fichiers de configuration
SECRET_KEY
est une variable de configuration requise pour gérer les éléments nécessitant du chiffrement (session, cookies)
Maintenant que vous avez installé Flask et organisé votre projet, commençons à ajouter des descriptions grâce à une base de données.