• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 01/02/2019

Installez Flask

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

L'objectif de ce chapitre est de configurer notre projet avec Flask. Commençons par l'installer !

Installation

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

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 ! 

Organisation du 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 

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. Pour les besoins du cours, vous y avez accès. Mais dans le cas d'une "vraie" application, la clé ne doit en aucun cas être accessible par d'autres personnes. Concrètement, il s'agit simplement d'une chaîne de caractères aléatoire qui peut être générée avec le code indiqué en commentaires. Il existe également des sites qui génèrent des clés (MiniWebTool par exemple).

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 !

Code de ce chapitre

Retrouvez le code de ce chapitre à cette adresse.

Exemple de certificat de réussite
Exemple de certificat de réussite