Flask
J'ai découvert Flask, il y a déjà plusieurs années, mais n'ayant jamais vraiment investi du temps dessus, je n'avais jamaiss osé utilisé.
Or à l'occasion d'une session de formation de Ada-flow sur l’utilisation des langages de programmation Python et Javascript j'ai plongé.
Avant de vous parler de mon exploration de Flask, voyons ce qu'est ce projet.
Flask c'est quoi?
Flask est un micro framework open source écrit en Python, voir la documentation, qui une fois installer vous permettra d'accéder aux éléments suivants :
- Le langage de modèles Jinja documentation ;
- La boîte à outils WSGI Werkzeug docdocumentation ;
- MarkupSafe pour éviter les attaques par injection ;
- ItsDangerous pour garantir l’intégrité des données ;
- Click pour écrire des applications en ligne de commande ;
De plus Flask est accompagné d'un grand nombre d'extentions référencées sur le site Pypi vous y trouverez surement votre bonheur.
Quelques Extensions
- Flask-Session: L'extension pour passer des informations d'une page à l'autre durant une session.
- Flask-babel: L'outil pour vous permettre de créer des pages en plusieurs langues
- Flask-SQLAlchemy: une documentation de l'ORM en français
Mes explorations
Vous constaterez que je ne parle pas de Flask-SQLAchemy ayant trouvé que utiliser directement SQLite était à ma portée.
Ma premiere application
La toute première une Liste des lignes (contacts) d'un fichier texte.
Trois URL :
- /
- /about
- /contacts
Aux quels correcpondent trois routes .
@app.route("/")
def homepage():
return get_html("index.html")
@app.route("/about")
def about():
return get_html("about.html")
@app.route("/contacts")
def contact():
contactpage = get_html("contacts.html")
mycontacts=get_contact()
mycontacts.sort()
change_value=""
for contact in mycontacts :
change_value=change_value + "<p>" + contact + "</p>"
return contactpage.replace("$$MesContacts$$",change_value)
Comment gérer les méthodes GET et POST
Ensuite quelques extension pour préciser la gestion des méthodes qu'un des participants avait du mal à comprendre.
Utiliser le moteur de template de Flask
Vous trouverez ici le résultat de mes premiers pas dans cet univers. Mon exemple est construit à partir de Primer on Jinja Templating que je vous recommande de consulter pas seulement pour jinja2 mais aussi pour l'utilisation de jinja2 dans Flask.
Site multi-langues
J'ai après avoir testé l'utilisation de Flask-babel, fait un fork du dépot de départ de la démo de Hazzill Rodriguez] afin de montée de version Babel.
Voici le dépôt de ce test, qui m'a servi de base pour développer le site de la bibliotheque d'espéranto de Lausanne
Créé: April 21, 2023