conférence #nwxtech5 : django, du framework pour les perfectionnistes au pony powered par goulwen...
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
![Page 1: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/1.jpg)
Prêt pour un ciné ?
![Page 2: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/3.jpg)
Un peu de philo
• En Python
![Page 4: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/7.jpg)
Les grandes fonc9onnalités
• Ac9ve Record
ORM
![Page 8: Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony powered par Goulwen Reboux](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060119/558df1951a28ab25438b45c6/html5/thumbnails/31.jpg)
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