Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen...

31
Prêt pour un ciné ?

description

Django est un framework web fullstack similaire à RoR ou Symfony mais en Python. Inspiré comme il se doit par le Zen of Python, il permet de concevoir des applications web de qualité rapidement mais aussi (et surtout) avec du fun.

Transcript of Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen...

Page 1: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Prêt  pour  un  ciné  ?  

Page 2: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Django  

Du  framework    pour  les  perfec9onnistes    

au  pony  powered  

Page 3: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Un  peu  de  philo  

•  En  Python  

Page 4: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Un  peu  de  philo  

•  En  Python  •  Full  stack  ==  baBeries  included  (ORM,  rou9ng,  auth,  i18n,  templates,  etc.)  

Page 5: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Un  peu  de  philo  

•  En  Python  •  Full  stack  ==  baBeries  included  (ORM,  rou9ng,  auth,  i18n,  templates,  etc.)  

•  Issu  du  monde  du  journalisme,  d'où  le  slogan  :  Le   framework   pour   les   perfec0onnistes   avec   des  deadlines.  

Page 6: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

“Get  an  H:pRequest,  return  an  H:pResponse”  

Contrat  de  base  

Page 7: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Ac9ve  Record  

ORM  

Page 8: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Ac9ve  Record  •  Syntaxe  déclara9ve  en  Python  

ORM  

Page 9: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

#  project/books/models.py  from  django.contrib.auth.models  import  User  from  django.db  import  models  

   class  Book(models.Model):  

 author  =  models.ForeignKey(User)    9tle  =  models.CharField(max_length=200)    excerpt  =  models.CharField(required=False,  max_length=500)    published_at  =  models.DateField(required=False)    available  =  models.BooleanField(default=True)    

ORM  

Page 10: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Tout  récupérer  :  Book.objects.all()  

•  Compter  :          User.objects.count()  •  Récupérer  un  objet  :          User.objects.get(pk=1)          User.objects.get([email protected])          User.objects.get(first_name=Chuck,  last_name=Norris)  

ORM  

Page 11: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Filtrer  les  données  :  User.objects.filter(staff=True)  User.objects.filter(staff=True,                                                                          email__icontains="domain.com")  User.objects.exclude(name__in=["foo",  "bar"])  User.objects.filter(staff=True,                                                                                  email__icontains="domain.com")                                              .exclude(name__in=["foo",  "bar"])  User.objects.filter(profile__prefs__lang__in=["fr",  "en"])  

ORM  

Page 12: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Tri  :  User.objects.filter(staff=True).order_by("-­‐date_joined")  

•  Suivi  des  rela9ons  :            User.objects.select_related().filter(staff=True)            User.objects.select_related(depth=1).filter(staff=True)            User.objects.select_related("profile",  "profile__prefs")  

                                                     .filter(staff=True)  

ORM  

Page 13: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  On  manipule  vraiment  des  objets  Python  :  -­‐  Récupérer  les  3  premiers  :                  User.objects.all()[:3]  

ORM  

Page 14: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Interagit  avec  les  modèles  :                #  project/books/forms.py          from  django  import  forms          from  models  import  Book            class  BookForm  (forms.ModelForm):                  class  Meta:  

     model  =  Book  

Les  formulaires  

Page 15: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

       #  project/books/views.py          from  django.shortcuts  import  render_to_response          from  forms  import  BookForm    

       def  add_book(request):                  if  request.method  ==  "POST":                          form  =  BookForm(request.POST)                          if  form.is_valid():  form.save()                  else:  form  =  BookForm()                  return  render_to_response("books/add.html",  

                       {"form":  form})  

Les  formulaires  

Page 16: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

•  Pour  les  designers  :  –   Simple  (rend  impossible  de  faire  du  modèle  dans  un  template  ≠  PHP)  – Secure  par  défaut  (échappement  pour  les  XSS,  gère  silencieusement  les  valeurs  absentes)  – Extensible  

Les  templates  

Page 17: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  grandes  fonc9onnalités  

<h1>{{  book  }}</h1>  <h2>Author  {{  book.author  }}</h2>  {%  if  book.chapters.count  %}      <ul>{%  for  chapter  in  book.chapters.all  %}                          <li>  

   <a  href="{%  url  chapter_view  book.slug  %}”>{{  chapter  }}</a>      </li>  {%  endfor  %}  

               </ul>  {%  else  %}  

 <p>{%  trans  “This  book  hasn’t  chapters  yet  %}</p>  {%  endif  %}  

Les  templates  

Page 18: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  atouts  

•  Ze  killer  feature  •   >>  admin  symfony  pourtant  déjà  top  

L’admin  

Page 19: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  atouts  

•  Un  énorme  écosystème  d'apps  réu9lisables  (comme  drupal  ou  Wordpress,  la  qualité  en  plus  :p)  

•  djangopackages.com,  Pypi,  github,  etc.  

Reusable  apps  

Page 20: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  atouts  

•  Python  a  une  Standard  lib  très  vaste,  bien  structurée  et  de  très  bonne  qualité.  

•  PyPi  complète  encore  au  besoin.  

It's  just  Python  

Page 21: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  atouts  

•  N'importe  quel  module/package  Python  peut  être  u9lisé  :  

       >>>  from  __future__  import  braces              File  "<stdin>",  line  1          SyntaxError:  not  a  chance          >>>    

       ou  presque  !  

It's  just  Python  

Page 22: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  atouts  

•  Ne  faites  plus  des  pages  •  Ne  faites  plus  des  apps  •  Faites  des  infras  

•  PaBern  "Loose  coupling,  0ght  cohesion."    

"Languages,  libraries  and  frameworks  don't  scale,  architectures  do."  

                                                                                                                       —  Cal  Henderson  

Concevez  des  infras  

Page 23: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  points  faibles  

•  Pas  énormément  de  ressources  en  France  (mais  un  pe9t  groupe  bien  sympathique)  

Moins  connu  que  Symfony  ou  même  RoR  

Page 24: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Les  points  faibles  

•  Async  en  possible  en  Python  (gevent,  Tornado,  Twisted)  

•  Mais  du  coup,  pas  django  •  Redis  is  your  friend  

NodeJS  

Page 25: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Développement  •  Un  serveur  web  intégré  +  SQLite  

./manage.py  syncdb  

./manage.py  runserver  

•  Pour  les  migra9ons  :  South  •  Pour  contrôler  ce  qui  se  passe  pendant  une  

requête:  django-­‐debug-­‐toolbar    

Page 26: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Déploiement  •  Un  peu  plus  compliqué  que  PHP  •  Des  hébergeurs  spécialisés  :  – Alwaysdata  (FR)  – Heroku  (US)  

•  Setup  typique  :  – nginx  (sta9cs  JS/CSS)  – gunicorn  (serveur  applica9f)  – Postgres  

Page 27: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Qui  l'u9lise  

•  Issu  du  monde  du  journalisme  :  Lawrence  World,  NYT  

•  Google  (GAE  a  d'abord  été  dispo  en  Python  avec  un  django  modifié  pour  u9liser  BigTable)  

•  Mozilla  (le  site  addons)  •  Nasa  •  Startups:  Instagram,  Pinterest,  Disqus,  Bitbucket,  eventbrite  

Page 28: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

En  France  

•  Libé,  20  minutes  •  Autolib  •  Century  21  •  Alwaysdata  (hébergement)  •  Startups  :  Greenbureau,  Novapost  •  CRM  :  Creme  CRM  

Page 29: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Trouver  de  l'info  et  du  support  

•  En  Français  :  – Channel  IRC  #django-­‐fr  irc.freenode.net  – django-­‐fr  (ML  et  forum)  www.django-­‐fr.org    – Tutos  hBp://tutos-­‐django.com    –  les  djangocongs  hBp://rencontres.django-­‐fr.org    

Page 30: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Remerciements  

@revolunet  pour  django  success  stories    hBp://www.revolunet.com/sta9c/django-­‐success-­‐stories    

Page 31: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux

Pour  finir  

•  @nau9lebleu  /  hBp://nau9lebleu.tumblr.com    

•  @greenbureaufr  /  hBp://greenbureau.fr  – Stages  &  jobs  hBp://remixjobs.com/emploi/Developpement/Developpeur-­‐Integrateur-­‐Front-­‐End-­‐Django-­‐H-­‐F/15980