Flask

Presenter Notes

Pourquoi Python?

Presenter Notes

Syntaxe économique et
batteries included


Récupérer et parser un flux RSS:

import urllib, sys
from xml.dom import minidom

address = 'http://www.sebsauvage.net/rss/updates.xml'
document = minidom.parse(urllib.urlopen(address))

for item in document.getElementsByTagName('item'):
    title = item.getElementsByTagName('title')[0].firstChild.data
    print "Title:", title

Presenter Notes

Écosystème

for todo in project:
    try:
        to_install = find_existing_project_implementing(todo)
    except ProjectNotFound:
        print "You probably did not look hard enough!"
        implement_it_yourself() # if you really have to
    else:
        download_and_install(to_install)
        write_glue_code()

Voir par exemple pypi



(Et python existe en dehors du développement web!)

Presenter Notes

Le problème de la version

Python 3

  • c'est bien
  • c'est l'avenir

Il faudrait utiliser Python 3 pour tout nouveau projet (et migrer les projets existants...)

... mais dans le développement web on est encore souvent bloqué à Python 2.x

Presenter Notes

Python pour le développement web

Pros

  • Développement ultra-rapide (syntaxe, batteries, écosystème)
  • Lisibilité du code (maintenance facilitée!)
  • Exécution raisonnablement efficace
  • Communauté dynamique & sympathique!

Cons

  • Déploiement (un peu) plus compliqué que PHP
  • Gestion des dépendances (voir ci-après!)
  • Python 2 vs Python 3
    • Encodage des chaînes de caractères...
    • ...

Presenter Notes

Micro-framework?

Presenter Notes

Un framework comme Django fournit...

  • Routage des URLs
  • ORM
  • Système de templates
  • Interface d'admin automatique
  • Formulaires avec validation
  • Gestion du cache
  • Internationalisation
  • Serveur de développement
  • Implémentation WSGI/...
  • ...
Mais si on a pas besoin de tout ça?

Presenter Notes

Un micro-framework fournira...

  • Routage
  • Implémentation WSGI/...

Et éventuellement...

  • Serveur de développement
  • Système de templates
  • ...
Il y a donc une continuité entre les
micro-frameworks et les frameworks!

Presenter Notes

Qu'est-ce que flask?

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. And before you ask: It's BSD licensed! (http://flask.pocoo.org/)

Forcément:

  • Routing
  • WSGI

En plus, notamment:

  • Jinja 2 templates
  • Serveur de développement avec débogueur
  • Tests, sessions, ...
  • Documentation!

Presenter Notes

Outils incontournables

Presenter Notes

virtualenv & pip

(+virtualenvwrapper sous Linux)

Développement

$ mkvirtualenv my_great_app
$ pip install flask
$ pip install pygal
$ pip freeze > requirements.txt

Déploiement

$ mkvirtualenv my_great_app
$ pip install -r requirements.txt

Permet de

  • recréer un environnement de manière simple et prédictible
  • tester les mises à jour sans tout casser
  • migrer des projets séparément

Presenter Notes

Distributed version control system (git/mercurial/...)

A successful Git branching model

Presenter Notes

Presenter Notes

Presenter Notes