Flask Framework

Flask est un micro-framework qui dépend très peu des bibliothèques externes. C'est un cadre très léger et nous donne la liberté de faire ce que nous voulons.

Dans ce chapitre, nous allons construire un projet en utilisant le framework Python et Flask.

Démarrage et configuration de Flask

Comme la plupart des bibliothèques python largement utilisées, le package Flask peut être installé à partir de Python Package Index (PPI). Créons d'abord un répertoire (Dans ce chapitre, nous avons créé un répertoire appeléflaskProject) a ensuite créé un environnement virtuel (et l'a appelé comme flaskEnv) où toutes les dépendances liées au projet seront chargées (y compris flask). Vous pouvez également installer flask-sqlalchemy afin que votre application flask dispose d'un moyen simple de communiquer avec la base de données SQL.

Après avoir installé le flask, votre flaskEnv (notre nom d'environnement virtuel) affichera quelque chose comme ci-dessous -

Créer une application avec flask

En installant flask, nous pouvons créer un simple "hello application in flask»Avec très peu de lignes de code comme suit -

Tapez ce qui suit dans le terminal -

$python flaskapp.py

Et vous pouvez voir la sortie suivante -

Courir sur http://127.0.0.1:5000/ ou sur localhost:5000

Vous trouverez ci-dessous l'explication de ce que nous avons fait dans notre exemple de code -

  • Tout d'abord, nous importons la bibliothèque de classes Flask. Une instance de cette classe est l'application WSGI.

  • Deuxièmement, nous créons une instance de cette classe. Le nom du package d'application ou du module est notre premier argument. Il est obligatoire que flask sache où trouver les fichiers statiques, les modèles et autres fichiers.

  • Vient ensuite le décorateur route () que nous utilisons pour savoir quelle URL doit déclencher notre méthode / fonction.

Créer un routage d'URL

Le routage d'URL facilite la mémorisation des URL de votre application Web. Nous allons maintenant créer des routes URL -

/hello
/members
/members/name

Nous pouvons écrire le code suivant basé sur l'URL ci-dessus et l'enregistrer sous app.py.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
   return "Index!"
	
@app.route('/Hello')
def hello():
   return "Hello, World!"
	
@app.route("/members")
def members():
   return "Members"
	
@app.route("/members/<name>/")
def getMember(name):
   return name
	
if __name__ == '__main__':
   app.run(debug=True)
Au redémarrage de l'application, nous utilisons les lignes de code ci-dessous pour obtenir différentes sorties sur différentes URL -

$ python app.py

Running on http://localhost:5000/

Nous obtiendrons la sortie suivante dans notre navigateur -

Nous pouvons essayer d'autres URL dans notre navigateur comme suit -

Running on http://localhost:5000/hello, will give the following output −

Running on http://localhost:5000/members, will give −

Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −

Mais normalement, nous ne voulons pas retourner une chaîne (comme ci-dessus), nous retournons des modèles. Pour cela, nous voulons utiliser une fonction "render_template”À partir de flask, et renvoie render_template avec une entrée. Donc, la fonction ci-dessous fera notre travail -

from flask import render_template
return render_template(‘home.html’)

Créons un modèle de dossier et placez-y le fichier home.html.

Ensuite, nous discuterons de la mise en page. Au lieu d'utiliser les balises head et body html pour chaque modèle, nous allons concevoir une mise en page pour inclure les balises head & body et envelopper les vues actuelles ou le modèle actuel. Pour cela, nous devons créer un fichier séparé et l'appelerlayout.html. En cela, nous pouvons mettre notre balise head normale, balise body et toutes les autres balises requises.

Nous pouvons créer notre nouveau layout.html avec les lignes de code suivantes -

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

Dans le code ci-dessus, nous avons donné la piste titre, MyFlaskAp, utilisez css cdn dans la tête et javascript dans le bloc de corps pour activer le bootstrap.

Maintenant, nous devons créer une barre de navigation pour chaque page. Pour cela, nous devons d'abord créer un dossier d'inclusion, puis créer un fichier _navbar.html à l'intérieur. Maintenant, dans le _navbar.html, nous devons utiliser le modèle de démarrage standard de getbootstrap.com. Le fichier _navbar.html nouvellement créé sera le suivant -

Et incluez ce fichier _navbar.html dans notre fichier layout.html.

{% include 'includes/_navbar.html' %}

Comme nous avons le bloc de mise en page, nous pouvons étendre ce bloc dans notre fichier home (home.html).

Notre fichier home.html peut être créé en utilisant le code ci-dessous -

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

En utilisant ceci si nous essayons d'exécuter notre fichier flaskapp.py, nous pourrions voir la sortie ci-dessous dans notre navigateur -

Maintenant, nous voulons activer (actuellement les onglets ne fonctionnent pas) notre aboutlanguette. Créez un itinéraire pour l'onglet à propos et créez un fichier modèle,about.html.

À propos de la route des onglets dans appflask.py sera comme indiqué ci-dessous -

Le fichier about.html aura le contenu ci-dessous -

Donc, Home et About sont maintenant pris en charge. Pour les articles, nous pouvons créer un nouveau fichier (data.py) dans le répertoire racine, où nous mettons les données et l'appelons dans notre page Web.

data.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

Ci-dessous le code pour articles.html, qui affichera les titres des articles pour chaque uid.

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

Pour résumer, Flask est l'un des frameworks Web python les plus populaires en raison de sa légèreté. Bien qu'il soit micro, il s'agit d'un framework Web Python extensible. En fournissant les fonctionnalités requises, flask accélère le développement d'une application Web simple. Donc Flask est plus adapté aux applications plus petites et moins compliquées.