François Audirac
Responsable des Systèmes d'Information Association nationale des CEMEA
Petite appli web : pas gros traffic
Petite appli web : pas gros traffic
Installations
apt install python3-flask # system
ou
pip install flask # locale
ou
apt install python3-pip python3-venv # env virtuels
mkdir monprojet && cd monprojet
python3 -m venv virtuel
source virtuel/bin/activate
pip install flask
#!/usr/bin/env python3
from Flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World'
if __name__ == '__main__':
app.run()
export FLASK_ENV=development # production
python3 hello.py
http://127.0.0.1:5000/
@app.route('/hello/<string:username>')
def mafonction(username):
...
return "Bienvenue "+username
http://127.0.0.1/hello/Marion
http://127.0.0.1/hello/Fatou
http://127.0.0.1/hello/Francois/
Personnaliser des fichiers HTML formatés
Dossier "templates" à créer
from Flask import Flask, render_template
@app.route('/accueil')
def index():
mesdata = {"user":"François","age":49}
return render_template('index.html', title='Home', data=mesdata)
<html>
<head>
<title>{{ title }} - Mon blog</title>
</head>
<body>
<h1>Hello, {{ data.user }}!</h1>
<p>Tu as {{ data.age }} ans !</p>
</body>
</html>
http://127.0.0.1/accueil
Dossier "static" à créer
pour images, css...
<link href="{{ url_for('"static', filename='style.css') }}" rel="stylesheet">
<img src="{{ url_for('static', filename='monimage.jpg') }}" >
Boucles for
{% for elem in data.dist %} ... {% endfor %}
Tests
{% if a == 0: %} ...elif ... else ... {% endif %}
Filtres
{{ data.user|capitalize }}, {{data.age|length }}
From Flask import request @app.route('/login', methods=['GET','POST']) pour GET :
valeur1 = request.form.get('mavaleur1') # renvoie None si vide : à privilégier
pour POST :
valeur2 = request.form['mavaleur2']
Tester request.method == 'GET':
pour avoir le bon résultat
Résultat sous forme de dictionnaire : {clef = valeur}
By François Audirac
Framework Flask, forms jinja
Responsable des Systèmes d'Information Association nationale des CEMEA