Ceci est une ancienne révision du document !
Flask
Mini framework pour faire une petite appli web avec des templates, du mail… : https://palletsprojects.com/p/flask/
6 tutos vidéos sympa en français : https://www.youtube.com/playlist?list=PLn6POgpklwWrbGpkwkTS-TvnXxp34srC4
5 autres sur Flask et les formulaires : https://www.youtube.com/channel/UCABGT_MVqwPXXbdrOO_uYFQ
Créer une appli Flask avec un template jinja2
myapp.py :
#!/usr/bin/python # -*- coding: Utf-8 -*- from flask import Flask, render_template app = Flask(__name__) @app.route('/') @app.route('/accueil') def index(): # dictionnaire de data data = {'user': 'Xavki', 'machine': 'lubuntu-18.04'} # affichage return render_template('index.html', title='Home', data=data) @app.route('/hello') def index(): return "Page Hello" if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)
Dans le sous-dossier “templates”, un fichier index.html
<html> <head> <title>{{ title }} - Microblog</title> </head> <body> <h1>Hello, {{ data.user }}!</h1> <p>Tu es connecté de la machine : {{ data.machine }}</p> </body> </html>
Cas avec un template plus élaboré avec des appels aux librairies plateform (pour OS local) et netifaces (pour interfaces réseau)
On rajoute :
import platform import netifaces data = { 'user': 'Xavki', 'machine': platform.node(), 'os': platform.system(), 'dist': platform.linux_distribution(), 'interfaces': netifaces.interfaces() }
Et dans le template html :
<p>Machine : {{ data.machine }}</p> <p>OS : {{ data.os }}</p> <p>Distribution : </p> {% for elem in data.dist %} <p style="padding-left:20px">- {{ elem }}</p> {% endfor %} <p>Interfaces : </p> {% for inter in data.interfaces %} <p style="padding-left:20px">- {{ inter }}</p> {% endfor %}
Mode développement pratique pour gérer les modifs en direct et l'accès au mode débug en console :
export FLASK_ENV=development
ou ajouter un .env contenant FLASK_ENV=development
Et indiquer dans le script python :
from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv())
Méthode pour parcourir un dossier de fichiers
os.walk(dossier_a_parcourir)
Renvoie : parent, listedossiers (dnames), listefichiers (fnames)
os.path.join(parent,nomfichier)