Flask - Le micro-framework pour nos applications web

Découvrons ensemble ce micro-web-framework python, des bases jusqu'au déploiement sur serveur.

a marqué ce sujet comme résolu.
Auteur du sujet

Tout le monde se secoue ! :D

J'ai commencé (dimanche 23 octobre 2016 à 18h08) la rédaction d'un tutoriel au doux nom de « Flask - Le micro-framework pour nos applications web » et j'ai dans l'objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limite pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l'adresse suivante :

Seulement la 1ère partie est terminé, je veux avoir vos retours ;)

Merci !

Édité par mickael.quetelard

+13 -0
Auteur du sujet

Merci, je tiens à préciser que c'est mon tout premier tutoriel. Les bases de flask sont primordiales pour poursuivre sont apprentissage, pour cela je tiens à faire la partie "Les bases de Flask" en béton pour que l'apprenant puisse continuer sereinement.

J' ajouterais des illustrations et plus de détails s'il le faut. Le tutoriel s'adresse à un public d'initié à python et aux concepts du web.

+0 -0

tornado aussi, non?

artragis

Il faut voir. Tornado est maintenant basé sur asyncio. Ça change un peu la façon dont s'organisent les frameworks et je ne sais pas, concrètement, ce que ça peut donner pour les utiliser intelligemment.

I was a llama before it was cool

+0 -0

Bonjour,

Je te conseille de rédiger avec un éditeur comme Zest Writer qui te permet d'éviter pas mal de fautes assez faciles. Voici une sélection de quelques fautes que Zest Writer m'a renvoyé sur ton tutoriel. Et il en a relevé pas mal.

Intégrons le template index.html dans notre vue :

Premier template

Impératif + pronom

  • Intégrons-le

La méthode render_template() ne sert pas qu'a prendre en charge le template de la vue mais aussi à l'envois de variable.

Premier template

Auxiliaire suivi d’un verbe conjugué

La méthode render_template() ne sert pas qu'a prendre en charge le template de la vue mais aussi à l'envois de variable.

Premier template

Faute d'orthographe possible (sans suggestions)

Avec un context(dictionnaire de variables)

Premier template

Faute d'orthographe possible (sans suggestions)

A vous de choisir la façon dont vous voulez récupérer vos variables dans le html

Premier template

A au lieu de À

  • À

Nos applications web moderne possèdent de belles urls, nous allons en faire de même avec Flask. Tout comme sur Bottle, les urls sont générés par des décorateurs. Si vous ne savez pas ce à quoi servent les décorateurs un tutoriel a déjà été écrit pour vous.;)

Les décorateurs d'urls

pluriel suivi du singulier

Et que vous vous dirigez sur http://127.0.0.1:5000/index vous serez directement rediriger vers http://127.0.0.1:5000/index/. Faites-donc cette dernière façons décrire afin que votre utilisateur ne soit pas dirigé vers une erreur 404.

Les décorateurs d'urls

singulier suivi du pluriel

Le micro de micro-framework signifie que Flask vise à maintenir son noyau minimaliste mais extensible. Flask ne prendra pas de décisions à votre place, comme par exemple quelle base de données utiliser avec celui-ci ou encore son moteur de template Jinja2 (que nous verrons plus loin dans ce tutoriel),qui est facilement modifiable. Ces décisions sont de votre ressort. Tout le reste est à vous, de sorte que Flask puisse travailler avec les extensions que vous avez décidé d'importer et non d'extensions que vous n'aurez pas besoins d'utiliser pour votre application.

Un micro-framework ?

comme par exemple

  • comme
  • par exemple

Le micro de micro-framework signifie que Flask vise à maintenir son noyau minimaliste mais extensible. Flask ne prendra pas de décisions à votre place, comme par exemple quelle base de données utiliser avec celui-ci ou encore son moteur de template Jinja2 (que nous verrons plus loin dans ce tutoriel),qui est facilement modifiable. Ces décisions sont de votre ressort. Tout le reste est à vous, de sorte que Flask puisse travailler avec les extensions que vous avez décidé d'importer et non d'extensions que vous n'aurez pas besoins d'utiliser pour votre application.

Un micro-framework ?

Espace devant « , », « ) » ou après « ( »

  • , qui

Le micro de micro-framework signifie que Flask vise à maintenir son noyau minimaliste mais extensible. Flask ne prendra pas de décisions à votre place, comme par exemple quelle base de données utiliser avec celui-ci ou encore son moteur de template Jinja2 (que nous verrons plus loin dans ce tutoriel),qui est facilement modifiable. Ces décisions sont de votre ressort. Tout le reste est à vous, de sorte que Flask puisse travailler avec les extensions que vous avez décidé d'importer et non d'extensions que vous n'aurez pas besoins d'utiliser pour votre application.

Un micro-framework ?

accord que + verbe avoir

Le routage de nos urls est une chose essentielle des applications web. Sous Flask elles ne sont pas très compliqué à écrire, voyons comment peut-on faire.

Introduction

être + participe passé

Une fonction qui prendra en charge notre vue index, étant la vue principale de notre application nous pouvons aussi l'appelé home ou main. On y retourne un simple message pour le moment.

Une vue de base

féminin suivi du masculin

A la fin nous pouvons rajouter run ou runserver, ça fonctionnera quand même, ceci est votre choix, moi je n'en mets pas

Une vue de base

A au lieu de À

  • À

Oui, c'est banal mais au moins ça fonctionne. Par la suite nous ferons quelque chose de bien plus poussé. Flask demande plus de mise en oeuvre que ce simple bout de code.

Une vue de base

Faute d'orthographe possible (sans suggestions)

Nous pouvons maintenant interagir avec nos utilisateur grâce aux formulaires.

Conclusion

pluriel suivi du singulier

Flask-WTF est très utiles pour vérifier et sécuriser nos formulaires.

Conclusion

singulier suivi du pluriel

Les urls sont créer à l'aide de décorateur.

Conclusion

Auxiliaire suivi d’un verbe conjugué

On peut passer plusieurs type de variable dans les urls.

Conclusion

pluriel suivi du singulier

Flask s’installe juste avec Werkzeug, une mise en œuvre d'application WSGI appropriée ainsi que Jinja2 pour la manipulation de template. Il se lie également à quelques paquets de la bibliothèques standards tels que logging. Tout le reste est à mettre en place avec les extensions.

Ce qu'est Flask et ce qu'il n'est pas

Faute d'orthographe possible (sans suggestions)

En gros, Flask s'installe sans aucune extension et le développement débute from scratch. C'est un point que beaucoup de développeurs Flask considèrent comme négatif car rébarbatif. Des projets sur github sont en développement afin de pouvoir installer Flask avec les principales extensions déjà configurer.

Ce qu'est Flask et ce qu'il n'est pas

Faute d'orthographe possible (sans suggestions)

Voir flask-starter , flask-skeleton

Ce qu'est Flask et ce qu'il n'est pas

Espace devant « , », « ) » ou après « ( »

  • ,

D'autres frameworks sont aussi sympa comme Bottle, Pyramid ou Flask. Nous allons apprendre à développer avec Flask. Son objectif est d'être minimaliste et extensible afin de faire évoluer votre application rapidement et facilement. Sur ce tutoriel j’essaierai de partager mes connaissances sur Flask. Pour m'aider, je prendrais comme exemple la documentation officielle ainsi que d'autres source anglophone.

Introduction

faire application

  • poser sa candidature

Dans ce tutoriel nous apprendrons le développement d'application web grâce au micro-framework Flask. Facile à mettre en place, grâce à ses nombreuses extensions il n'a pas à rougir face à de gros calibre tels que Django, RoR ou Symfony. A travers le développement d'une application pour notre TP 'micro-blog', nous verrons les phases de conceptions les plus importantes de Flask ainsi que quelques idées pour améliorer ce TP.

Introduction

A au lieu de À

  • À

Flask, n'hésitez pas à lire et relire les tutoriels de Zeste de Savoir ou autre sites d'apprentissage.

Introduction

singulier suivi du pluriel

Je ferais aussi quelques apartés pour les développeurs Django afin de pointé les similitudes et les différences entre nos framework favoris.

Introduction

Comment + verbe ppa

  • pointer

Je ferais aussi quelques apartés pour les développeurs Django afin de pointé les similitudes et les différences entre nos framework favoris.

Introduction

pluriel suivi du singulier

Qu'est-ce q'un moteur de templates ?

Introduction

Faute d'orthographe possible (sans suggestions)

Est-ce que ça veut dire ce que je pense ? et bien non.

Flask-WTF l'extension spécialisée dans les formulaires

Absence de majuscule en début de phrase

  • Et

WTForms est une bibliothèque flexible de validation et de rendu de formulaires pour le développement Web en python. Et bien, c'est ce qu'il nous faut pour cet exemple. Et comme par hasard, une extension Flask a déjà été créer pour le WTF, ce qui nous sera grandement utile.

Flask-WTF l'extension spécialisée dans les formulaires

Auxiliaire suivi d’un verbe conjugué

Dans notre projet créons un nouveau fichier nommé forms.py. Notre dossier devrait ressemblé à ceci :

Flask-WTF l'extension spécialisée dans les formulaires

Comment + verbe ppa

  • ressembler

Et enfin on crée notre classe LoginForm() qui hérite de la classe Form, ici nous avons 1 champs de type StringField qui prend en paramètres le label(optionnel) et le validator avec notre classe DataRequired().

Flask-WTF l'extension spécialisée dans les formulaires

nombre singulier suivi du pluriel

+3 -1
Auteur du sujet

Bonjour,

@tleb, merci pour ta proposition ! Effectivement, je m'en doutais gros comme le nez sur le visage que le tutoriel soit bourré de fautes d'orthographes, de conjugaisons, de grammaires et de syntaxes. :euh:

@firm1 pas mal le Zest Writer, je m'en servirai dès maintenant !

+0 -0

Le parti pris d'utiliser SQLAlchemy dès le second chapitre me semble un peu discutable. Le but est-il d'apprendre Flask ou bien une stack complète ?

On ne peut pas se contenter, pour le bien du tuto, de flask + sqlite qui est standard ? Ou flask + Redis ? L'idée sous-jacente étant de montrer l'avantage d'utiliser un micro-framework : c'est simple, léger, rapide et ça te donne un premier résultat immédiatement.

I was a llama before it was cool

+4 -0
Auteur du sujet

@nohar oui tu es dans le vrai. Je pense que de commencer la partie 'base de donnée' avec un ORM n'est pas un choix très judicieux.

Partir sur flask+sqlite pour la bdd et mettre SQALchemy dans la partie 'allez plus loin' pour ceux et celles qui aimeraient découvrir son utilisation avec Flask.

+2 -0

J'allais faire la remarque. Flask ne fournit pas d'ORM, je pense qu'en introduire est dommageable. Il y a beaucoup de choses à dire sur le cœur avant ça.

De façon lié, je pense que partir sur un blog/micro blog est pas une bonne idée. Déjà c'est ultra classique, tous les tutos de Flask prennent ça (l'officiel, le "mega-tuto", même le tuto d'OC en français). Ensuite ça t'oblige à introduire une base de données et tout un tas d'extensions avant de pouvoir faire un tp.

Je pense que dès la fin de la partie sur le coeur (qui ne devrait pas contenir d'utilisation d'extensions comme ton dernier chapitre), tu devrais faire un tp. Même sans base on peut en trouver : un explorateur de fichiers par exemple.

Ça permet de découper clairement base/extensions et de les faire pratiquer sur ce qui concerne vraiment Flask.

Une fois ça fait, en pratique après il faut voir les extensions et utiliser sql alchemy ne me dérange pas vu que c'est un classique très utilisé. Mais après qu'un tp à déjà été fait sans. Peut être que plus tard tu pourra rajouter des chapitres sur d'autres ORM.

Je pense qu'il faut vraiment que la première partie soit auto suffisante (couvre Flask sans extensions et avec de la pratique). Ainsi tu pourras déjà la publier et c'est ce qui intéressera le maximum de gens.

Enfin il y a un truc de ta deuxième section à réintégrer dans la première : la dernière version de Flask inclus Clic et propose directement l'équivalent de l'extension "script" en natif. Puisque c'est intégré dans Flask, autant le présenter avec le reste.

Bonne chance

+5 -0

Idem. Je te fais une relecture dès que possible, et je trouve l'initiative géniale.

PS : après Django et Flask il.ne nous manquera plus que aiohttp…

nohar

aiohttp se trouverait eventuellement en dessous de Django / Flask non ?

+0 -0
Auteur du sujet

@Kje, oui je n'ai pas pensé à séparer les bases des extensions. Je vais clairement remanier les sections et chapitres. Un TP sur les bases de Flask (autres chose qu'un blog :lol:) et un TP avec quelques extensions en plus.

J'ai toujours travaillé avec flask-script, je me pencherais sur click mais la grande majorité des applications Flask utilise flask-script plutôt que l'intégration de click dans Flask. L'ajout de click est cause de chamailleries entre Armin et la communauté Flask, sachant qu'Armin est un peu têtu sur les bords.

voir un commentaire de cet article qui résume bien la situation.

+0 -0

Idem. Je te fais une relecture dès que possible, et je trouve l'initiative géniale.

PS : après Django et Flask il.ne nous manquera plus que aiohttp…

nohar

aiohttp se trouverait eventuellement en dessous de Django / Flask non ?

juke

La partie serveur d'aiohttp se présente vraiment au même niveau d'abstraction que Flask. Tu écris une coroutine, tu la lies à la route "/", tu lances une app dans la boucle asyncio, et pof, t'as le résultat dans ton navigateur.

Pour une sous-couche on aurait plutôt un simple asyncio.Protocol HTTP avec un parseur optimisé comme celui développé par MagicStack ici : https://github.com/MagicStack/httptools

Édité par nohar

I was a llama before it was cool

+0 -0

quand j' ai commencé à m' interesser à Flask j'avais deja fait un peu de html mais pas de JS. Du coup j'ai du me battre sur deux fronts en même temps. Un TP en fin de cours avec quelques rappels JS/jquery/ajax peut aider le débutant.

+0 -0

quand j' ai commencé à m' interesser à Flask j'avais deja fait un peu de html mais pas de JS. Du coup j'ai du me battre sur deux fronts en même temps. Un TP en fin de cours avec quelques rappels JS/jquery/ajax peut aider le débutant.

buffalo974

Ça me semble hors sujet. Perso j'utilise Flask pour développer des services REST sans jamais m'occuper du frontend ou des clients, je ne connais pas un broque à JS, et je pense qu'on peut très bien vivre et utiliser Flask sans ça…

Il vaudrait mieux avoir un tuto à part vers lequel linker, à mon avis.

Édité par nohar

I was a llama before it was cool

+6 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte