Flask est un micro-framework basé sur Python pour créer des pages Web. Il peut être utilisé pour présenter des interfaces Web sur le Pi et est relativement facile à configurer. C’est utile pour créer des tableaux de bord et je l’ai découvert pour la première fois en cherchant une méthode pour créer mon panneau de contrôle de pataugeoire.
Ce tutoriel vous expliquera comment créer un site de base pour vous aider à démarrer. Une fois que vous avez un exemple qui fonctionne, la documentation officielle peut être utilisée pour passer à des sujets plus avancés.
J’utilise Python 3 dans ce tutoriel. Cela devrait fonctionner de la même manière avec Python 2 mais vous devrez remplacer toutes les références à « python3 » par « python ».
Créer une nouvelle carte SD
Pour éviter les conflits avec d’autres logiciels que vous avez peut-être installés, je vous recommande de commencer avec une nouvelle carte SD en y écrivant la dernière image Raspbian. J’utilise Etcher pour écrire des images Raspberry Pi et pour mes premières expériences avec Flask, j’ai utilisé l’image Jessie Lite du page de téléchargement officielle.
Activer SSH
Par défaut, SSH est désactivé. Si vous souhaitez configurer le Pi sur le réseau à partir d’un autre ordinateur, vous pouvez l’activer soit :
- Création d’un fichier vierge nommé « ssh » dans la partition de démarrage (sous Windows, c’est la seule partition à laquelle vous pouvez accéder)
- Utilisation de l’utilitaire raspi-config pour activer SSH avec un moniteur et un clavier connectés au Pi
Consultez le guide Activation de SSH sur le Pi pour plus d’informations.
Trouver l’adresse IP
Découvrez l’adresse IP de votre Pi. Si vous utilisez un moniteur et un clavier, vous pouvez exécuter :
ifconfig
Il sera très probablement de la forme 192.168.#.#. Lors de la rédaction de ce tutoriel, mon Pi utilisait 192.168.1.19.
Si vous vous connectez à distance via SSH, vous pouvez utiliser un scanner IP pour le trouver ou il sera répertorié quelque part dans les paramètres de votre routeur.
Mettre à jour et modifier le mot de passe
Lors de l’activation de SSH, je recommanderais fortement de changer le mot de passe par défaut de « Raspberry Pi » !
Utiliser :
passwd
Définissez le nouveau mot de passe, puis exécutez :
sudo raspi-config
Sélectionnez « Avancé » suivi de « Développer le système de fichiers ».
Pour vous assurer que nous installerons les derniers packages, exécutez les deux commandes suivantes :
sudo apt-get update sudo apt-get -y upgrade
Ce processus peut prendre 5 à 10 minutes.
Installer le pépin
Avant de pouvoir installer Flask, nous devons installer pip, le gestionnaire de packages Python :
sudo apt-get -y install python3-pip
Installer le flacon
Il est maintenant temps d’installer Flask :
sudo pip3 install flask
J’ai reçu quelques erreurs dans la sortie, mais à la fin, il a signalé « Fiole installée avec succès ».
Créer une application Flask de test
Maintenant que Flask est installé, nous devons créer un petit site de test pour vérifier que tout fonctionne. Dans ce tutoriel, je suppose que le site de test s’appelle « testSite ». Vous pouvez utiliser le nom de votre choix, mais vous devrez échanger toutes les références à « testSite » avec votre nom. Créer un nouveau dossier :
cd ~ mkdir testSite
Accédez au nouveau dossier et utilisez la commande suivante pour créer un nouveau script Python :
cd testSite sudo nano testSite.py
Collez ensuite le code suivant :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<html><body>
<h1>Test site running under Flask</h1>
</body></html>"
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
Appuyez sur « CTRL-X », « Y » et « Entrée » pour enregistrer et revenir à l’invite de commande.
Ce script définit un site Web simple d’une page.
Tester le serveur Web Python
Vous pouvez maintenant exécuter le script en utilisant :
python3 testSite.py
Si vous visitez l’adresse IP de votre Pi dans un navigateur, le site de test devrait être visible :

Notez que Flask utilise le port 5000 par défaut et que vous devez remplacer 192.168.1.19 par l’adresse IP réelle de votre Pi.
Ajout de pages supplémentaires
Le script peut être modifié pour ajouter des « pages » supplémentaires. Jetez un œil à l’exemple ci-dessous :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<html><body>
<h1>Test site running under Flask</h1>
</body></html>"
@app.route("/hello")
def hello():
return "<html><body>
<h1>This is the hello page</h1>
</body></html>"
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
Il ajoute un « itinéraire » supplémentaire appelé « bonjour ». Cette page s’affichera lorsque vous visiterez le sous-répertoire hello :

Encore plus d’itinéraires
Vous pouvez également extraire des informations de l’URL dans votre script pour créer des combinaisons de pages plus élaborées. Dans cet exemple, nous avons ajouté les routes /user/
from flask import Flask,render_template
app = Flask(__name__)
@app.route("/")
def index():
data=['Index Page','My Header','red']
return render_template('template1.html',data=data)
@app.route("/hello")
def hello():
data=['Hello Page','My Header','orange']
return render_template('template1.html',data=data)
@app.route('/user/<username>')
def show_user(username):
# show the user profile for that user
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
Entrez
Utiliser des pages de modèles
Plutôt que de définir votre page HTML dans le script, vous pouvez utiliser des fichiers modèles pour contenir la majeure partie du code HTML. Cela rend le script beaucoup plus facile à gérer lorsque vos pages sont un peu plus compliquées.
Flask recherche des modèles dans le répertoire « templates ». Créez un nouveau répertoire pour les modèles :
mkdir /home/pi/testSite/templates cd /home/pi/testSite/templates nano template1.html
Collez ensuite dans cet exemple de modèle :
<!DOCTYPE html>
<html>
<head>
<title>{{ data[0] }}</title>
<link rel="stylesheet" href="https://www.raspberryme.com/static/style.css" />
</head>
<body>
<h1>{{ data[1] }}</h1>
Favourite Colour : {{ data[2] }}
</body>
</html>
Le testSite.py peut alors être mis à jour avec :
nano testSite.py
et le contenu remplacé par :
from flask import Flask,render_template
app = Flask(__name__)
@app.route("/")
def index():
data=['Index Page','My Header','red']
return render_template('template1.html',data=data)
@app.route("/hello")
def hello():
data=['Hello Page','My Header','orange']
return render_template('template1.html',data=data)
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
Lorsque les deux « routes » sont activées, le même modèle est utilisé mais les valeurs qui lui sont transmises sont différentes. Ainsi, le visiteur voit une page légèrement différente.
Vous pouvez améliorer les modèles avec HTML et CSS. L’avantage des modèles est qu’ils gardent le script Python principal concentré sur les fonctionnalités et laissent la mise en page et l’esthétique au fichier modèle.
Mode débogage
Dans les exemples, l’indicateur « debug » est défini sur True. Cela exécute Flask en mode débogage qui recharge automatiquement Flask lorsque vous mettez à jour le script. Il fournit également des messages d’erreur si la page ne se charge pas. Si vous exposez le site à Internet, l’indicateur de débogage doit être défini sur False.
Script à exécution automatique au démarrage
Si vous souhaitez que le script Python s’exécute automatiquement au démarrage du Pi, vous pouvez utiliser cette technique :
crontab -e
Si vous y êtes invité, sélectionnez un éditeur à utiliser. J’ai tendance à utiliser « nano ». Insérez la ligne suivante en bas du bloc de commentaires :
@reboot /usr/bin/python3 /home/pi/testSite/testSite.py &
Appuyez sur « CTRL-X », « Y » et « Entrée » pour enregistrer et revenir à l’invite de commande.
Lorsque vous redémarrez, cela exécutera « testSite.py ». Le « & » assure qu’il s’exécute en arrière-plan.
sudo raspi-config
Sélectionnez « Options de démarrage » et « Bureau/CLI ». Sélectionnez « Connexion automatique à la console ». Cela signifie que lorsque le Pi démarre, il se connecte automatiquement en tant qu’utilisateur Pi.
Redémarrez en utilisant :
sudo reboot
et vos pages Web devraient être disponibles à l’adresse IP du Pi sur votre réseau.
Télécharger des scripts
Les exemples de scripts et de modèles de ce didacticiel sont disponibles dans mon référentiel BitBucket. Ils peuvent être téléchargés en utilisant ces liens : testSite1.py testSite2.py testSite3.py testSite4.py modèle1.py
Vous pouvez télécharger directement sur votre Pi en utilisant :
wget <url>
où
Documentation officielle et autres ressources
Il y a beaucoup plus d’informations sur la page de documentation officielle de Flask.
Cela vaut également la peine de jeter un coup d’œil à la Fondation Raspberry Pi – Construire un serveur Web Python avec Flask Didacticiel.
