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('/')
def index():
# dictionnaire de data
data = {'user': 'Xavki', 'machine': 'lubuntu-18.04'}
# affichage
return render_template('index.html', title='Home', data=data)
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)