Django
Des chiffres Date de début : Juillet 2005 1ère Release stable : 1.0, fin 2008 Release actuelle : 1.3.1, Septembre 2011 Des milliers de... Lignes de code, Développeurs, Révisions, Membres de la communauté
En France Association Django-Fr DjangoCong 2009, 2010 et bientôt 2011 ! Chan irc sur freenode : #django-fr Une mailing-list sur l'AFPy
Ce qu'il n'est pas CMS Minimaliste En morceaux épars Compliqué
J'aime Complexe, mais facile Répond à des besoins concrets du dev web Évite les tâches répétitives Sa documentation (très complète) Python
Urls & views Regex Url nommée View : fonction ou classe Décorateur de view « Shortcuts » (render, redirect, etc.) HttpRequest, HttpResponse
Template plain/text {{variable}}, {% fonction %} {% for item in list %} Index.html extends base.html {% block content %} {{variable|modifier}} Template Context Processor
ORM Mutli-Db Model Field Manager QuerySet Relation (FK, Many to Many)
Exemple Model # -*- coding: utf-8 -*- from django.db import models from django.contrib.auth.models import User from cantine.talk.managers import LightningTalkManager class LightningTalk(models.Model): title=models.CharField(max_length=255) abstract=models.TextField() date=models.DateTimeField() author=models.ForeignKey(User) is_valid=models.BooleanField(default=False) objects=models.Manager() validated=LightningTalkManager() def __unicode__(self): return u'%s' % self.title
Exemple Manager # -*- coding: utf-8 -*- from django.db import models class LightningTalkManager(models.Manager): def get_query_set(self): return super(LightningTalkManager, self).get_query_set().filter( is_valid=True) # -*- coding: utf-8 -*- from django.db import models class LightningTalkManager(models.Manager): def get_query_set(self): return super(LightningTalkManager, self).get_query_set().filter( is_valid=True) fstrzelecki@orpho:cantine/$ python manage.py shell >>> from cantine.talk.models import LightningTalk >>> LightningTalk.objects.filter(author__name='Florian Strzelecki').all() [<LightningTalk : "Django">, <LightningTalk : "Fabric">] >>> LightningTalk.validated.filter(author__name='Florian Strzelecki').all() [<LightningTalk : "Django">]
Formulaires Ce que je préfère ! Classe Form, attribut Fields {{my_form.as_p}} {% for field in my_form %} f = MyForm(request.POST) f.is_valid()
Admin Auto-générée Classe ModelAdmin Interface configurable (liste, filtre, tri, etc.) Bien documenté en surface Encore des efforts !
Et d'autres choses... Auth, Session Middleware Feeds Cache Fichiers statiques Email I18n Pagination Signals Etc...
Des questions ? Venez en parler ! Mailing-list IRC DjangoCong → http://www.django-fr.org/