Outils pour utilisateurs

Outils du site


cours:informatique:dev:python:concevez_site_avec_flask:120_installer_flask

Notes et transcriptions du cours “Concevez un site avec Flask” disponible sur la plateforme Openclassrooms

Installez Flask

Flask est un module, son installation est donc assez standard.

On commence par activer l' environnement virtuel dans lequel on installe les modules pour notre projet : flask avec pip.

cd TestUltime/
source env/bin/activate
 
pip3 install flask

Créer un fichier views.py avec le contenu sci-dessous :

views.py
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
    return "Hello world !"
 
if __name__ == "__main__":
    app.run()

Tester que Flask fonctionne en exécutant le script views.py:

python3 ./views.py

La commande retourne les messages suivants

 * Serving Flask app 'views'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

Ouvrir le Navigateur et dans la barre d'adresse taper l'URL http://127.0.0.1:5000, la page web doit afficher le message “Hello World !”

Organisez votre projet

C'est une première étape 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 :

tree . -L 1
.
├── env
├── index.html
├── result.html
├── static
└── views.py
 
2 directories, 3 files

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.

mkdir fbapp
 
git mv index.html result.html static/ fbapp/
mv views.py fbapp/

Déplacez index.html et result.html dans le dossier templates car là est leur place.

cd fbapp
mkdir templates
mv index.html result.html templates/

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.

touch __init__.py
cd ..
touch run.py

Ouvrez le fichier run.py 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

Si on lance le script run.py, on peut constater que tout fonctionne toujours :

python3 ./run.py
 * Serving Flask app 'fbapp.views'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 752-367-225

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, l'identifiant numérique donné par Facebook pour 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.

config.py
# To generate a new secret key:
# >>> import random, string
# >>> "".join([random.choice(string.printable) for _ in range(24)])
SECRET_KEY = "TFY6kDuW6cDH0mW3Ar9awWUD0"
 
FB_APP_ID = 1200420960103822

La variable SECRET_KEY sert de base pour 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).

Flask vous permet d'importer toutes les variables en une fois dans votre projet en utilisant la méthode config.from_object(file_name). Éditer le fichier views.py pour ajouter l'appel de la méthode :

views.py
from flask import Flask
 
app = Flask(__name__)
 
# Config options - Make sure you created a 'config.py' file.
# To get one variable, tape app.config['MY_VARIABLE']
app.config.from_object('config')
 
@app.route('/')
def index():
    return "Hello world !"

On peut à présent vérifier que les modifications apportées sont correctes en tentant de relancer le serveur :

python3 ./run.py

À retenir

  • 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).

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/dev/python/concevez_site_avec_flask/120_installer_flask.txt · Dernière modification : 2023/10/09 12:00 de yoann