« Python : Flask » : différence entre les versions
Ligne 85 : | Ligne 85 : | ||
<h1 > {{ message }}</h1> #On reconnaît les variables à la Jinja2 ! | <h1 > {{ message }}</h1> #On reconnaît les variables à la Jinja2 ! | ||
</body> | </body> | ||
</html> | |||
</source> | </source> | ||
</nowiki> | </nowiki> |
Version du 17 novembre 2019 à 11:28
http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/notebooks/TD2A_eco_debuter_flask.html
Qu'est-ce que c'est ?
Flask est un framework web léger pour Python. Son but est d'être souple et léger. Il utilise un système de templates et est sous licence BSD.
Première page
<syntaxhighlight lang='python'>
- !/usr/bin/env python3
- coding: utf-8
from flask import Flask
- On initialise notre application, qui s'appellera donc "app".
- __name__ renverra le script lui-même.
app = Flask(__name__)
- On définit une route avec ce décorateur :
- Notre code s'applique à la racine du site.
@app.route("/")
- Voici la fonction décorée : elle s'éxecute à l'affichage de la route en question.
def hello():
return "Hi there"
if __name__ == "__main__":
#run() est la méthode qui lance notre app. Cela lance un serveur web sur le port 5000. app.run()
</syntaxhighlight>
Ici, le terme "route" fait référence à la dernière partie d'une URL, celle qui donne le chemin des fichiers : www.site.fr/undossier/unepage
Un peu de style
Pour l'instant, la page est très basique. Nous allons devoir donner à Flask une structure de dossiers qu'il comprendra, avec templates et des styles prédéfinis pour l'application. Voici un exemple:
<source> . ├── hello_world_green.py ├── static │ └── main.css └── templates
└── home.html
</source>
- hello_world_green.py est le script principal.
- static contient une feuille de style main.css
- templates contient une page html.
<syntaxhighlight lang='python'>
- !/usr/bin/env python
- -*- coding: utf-8 -*-
from flask import Flask, render_template app = Flask(__name__)
@app.route("/") def hello():
return render_template("home.html", message = "Hello World!") #render_template fait le lien entre la page html, qui est un template, et le script en lui-même. #On voit que l'appel de fonction initialise la variable message, qui est une variable utilisateur (pas définie par Flask)
if __name__ == "__main__":
app.run()
</syntaxhighlight>
<source lang="css">
- static/main.css
h1 {
font-size: 2em; color: green; text-align: center;
} </source>
<source lang="html">
- /templates/home.html
<!doctype html> <html lang="en">
<head>
<link rel ="stylesheet" type="text/css" href="Modèle:Url for('static', filename='main.css')" #Ici, on appelle le css
</head> <body>
Modèle:Message
#On reconnaît les variables à la Jinja2 !
</body>
</html> </source> </nowiki>
Plusieurs pages
Tout ça c'est sympa, mais si on pouvait naviguer entre les pages ?