« Python : Flask » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
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'>

  1. !/usr/bin/env python3
  2. coding: utf-8

from flask import Flask


  1. On initialise notre application, qui s'appellera donc "app".
  2. __name__ renverra le script lui-même.

app = Flask(__name__)

  1. On définit une route avec ce décorateur :
  2. Notre code s'applique à la racine du site.

@app.route("/")

  1. 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'>

  1. !/usr/bin/env python
  2. -*- 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">
  1. static/main.css

h1 {

 font-size: 2em;
 color: green;
 text-align: center;

} </source>

<source lang="html">
  1. /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 ?