J'adore Django !

Bruno Bord

1er Juillet 2008 - RMLL

Haut les mains !

C'est qui Django ?

Un guitariste Français.

Django Reinhardt

C'est qui Django ?

Plus sérieusement

A framework for perfectionists with deadlines

C'est qui Django ?

Ou en Français :

Un cadre applicatif pour les perfectionnistes pressés.

C'est qui Django ?

Non, franchement

So whenever I'm explaining Django to someone, I always end up saying, "It's just a bunch of abstractions of common Web development tasks" – from low-level HTTP wrapping to higher – and higher-level concepts. The higher you get, the more productive you can be.

-- Adrian Holovaty

C'est qui Django ?

En Français

Dès lors que je dois expliquer Django à quelqu'un, j'en arrive toujours à, "C'est un tas (de couches) d'abstractions pour les tâches usuelles du développement web du HTTP bas niveau et en remontant vers des concepts de haut niveau. Plus tu montes, plus tu deviens productif.

-- Adrian Holovaty

Pourquoi un Framework

Trois approches au développement

Historique rapide

Usual suspects

Adrian Holovaty

Adrian Holovaty

Historique rapide

Usual suspects

Harry Potter

Harry Potter

Historique rapide

Usual suspects

Simon Willison

Harry Potter Simon Willison

Historique rapide

Fin 2002, Lawrence, Kansas

Historique rapide

Merci patron !

Maintenant

Usual suspects

Usual suspects

de dr. à g.: Simon Willison, Adrian Holovaty, Jacob Kaplan-Moss, et Matt Croydon.

Principes de base

Je vais aller vite...

... mais c'est exprès

Principes de base

MVC => MVT

Principes de base

Models

Models

Ce sont des classes Python

Models

Par exemple

class Article(models.Model):
    title = models.CharField(maxlength=50)
    body = models.TextField()
    published = models.BooleanField(default=True)

Models

Relations

class Category(models.Model):
    label = models.CharField(maxlength=50)

class Article(models.Model):
    title = models.CharField(maxlength=50)
    body = models.TextField()
    category = models.ForeignKey(Category)
    published = models.BooleanField(default=True)

Toujours pas de SQL...

Models

Bases de données

Models

ORM, rapidement

>>> # SELECT * from articles;
>>> Article.objects.all()
[<Article>, <Article>, <Article>, <Article>, ...]
>>>
>>> # SELECT * from articles WHERE id = 123;
>>> Article.objects.get(pk=123)
<Article>

Principes de base

Views

Views

Ce sont des fonctions

def index(request):
    return "hello world"

(mouais... presque)

Views

Mais finalement, on les utilise assez peu...

Les vues génériques sont tellement plus pratiques (less is more)

URLs

Architecture de l'information

urlpatterns = patterns('',
    (r'^monappli/', include('monsiteweb.monappli.urls')),
)

URLs

Listes et fiches

Fichier: /monsiteweb/monappli/urls.py:

urlpatterns = patterns('monappli.views',
    (r'^/?$', 'article_list', des_donnees),
    (r'^(?P<identifiant>\d+)/?$', 'article_detail',
        des_donnees),
)

URLs

En résumé

URLFonction
www.test.com/monappli/ article_list(des_donnees)
www.test.com/monappli/189 article_detail(189, des_donnees)

Bon, le code, c'est marrant...

... mais ça lasse

D'où le titre...

J'ADORE DJANGO !!!

J'adore Django #0

J'adore Django #1

J'adore Django #2

ORM: Object Relation Manager

J'adore Django #2

ORM: Object Relation Manager

>>> from blog.models import Article
>>> import datetime
>>> q = Article.objects.filter(
        published=True).exclude(
        pub_date__gte=datetime.date(2007,1,1)).filter(
        title__startswith='Je')
>>> # la variable "q" est un queryset...
>>> q.count() # Attention! la requête est exécutée *là*
43L

J'adore Django #3

Communauté

J'adore Django #3

Communauté FR

J'adore Django #4

L'administration auto-générée qui poutre sa mère !

Admin, capture d'écran - menu

J'adore Django #4

L'administration auto-générée qui poutre sa mère !

Admin, capture d'écran - formulaire

J'adore Django #4

L'administration auto-générée qui poutre sa mère !

J'adore Django #5

Templates

J'adore Django #6

Tests

J'adore Django #6

Tests

J'adore Django #7

Dépendances minimum

J'adore Django #8

Batteries included

J'adore Django #9

La documentation

Zi ende

Des Questions ?

Références

Images

Merci

Présentation sous contrat CC-BY-SA

http://jehaisleprintemps.net/rmll-2008/