SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Un peu d'histoire
●   Born in Chic... Lawrence
●   Début du projet en 2005 (21 juillet)
●   Première release stable fin 2008 (la 1.0)
●   Version stable actuelle : 1.3.1
●   Prochaine version : 1.4 (déjà en alpha)
Maybe I'm wrong (ce qu'il n'est pas)
●   Un CMS
●   Minimaliste
●   Compliqué
●   Une usine à gaz
●   Moins bien que les autres frameworks (en fait
    il est mieux)
Turn on your love light (ses avantages)
●   Bien mieux que tous les autres
●   En Python
●   Son ORM
●   Serveur de dev
●   Sa gestion des formulaires
●   L'admin auto-généré
●   La documentation très fournie
●   Sa communauté
MTV et pas MVC
●   Models Templates Views
●   Modèle = ressource
●   Vue = utilisation de la ressource
●   Template = rendu de la ressource (et
    uniquement le rendu)
In the midnight hour (Modèle et ORM)
●   Multi DB
●   Définition d'une classe Model en Python
●   Field
●   Manager
●   Queryset
●   Relation (ForeignKey, Many to Many)
Exemple de Model
# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User
from example.models.power import SuperPower
from example.models.manager import PinkManager
class Pony(models.Model):
  name = models.CharField(max_length=120)
  birthday = models.DateField(null=True)
  power = models.ForeignKey(SuperPower)
  created_by = models.ForeignKey(User)
  created_date = models.DateTimeField(null=True)


  objects = models.Manager()
  pink_poney = PinkManager()


  def __unicode__(self):
    return u'%s' % self.name
Groove me (Views)
●   Deux façons de faire : Old et New Way
●   Notions de vues génériques
●   Les vues traitent les requêtes des utilisateurs
●   Old Way : une vue est une fonction
●   New Way : une vue est une classe
●   Utilisation de MIXIN
Going back to Miami (Routage UrlPattern)
 ●   Pour router une requête HTTP sur une vue, Django utilise
     un système de Regex
 ●   Utilisation d'arguments possible passés de l'URI à la vue


from django.conf.urls.defaults import patterns, include, url


urlpatterns = patterns('pony.views',
     url(r'^$', 'index'),
     url(r'^(?P<pony_id>d+)/$', 'pony_detail'),
)
Old Landmark (Views, Old Way)
def pony_detail(request, pony_id):
  p = get_object_or_404(Pony, pk=pony_id)
   return render_to_response('pony/pony.html',
{'pony': p})
Perfect way (Views, New Way)
from django.conf.urls.defaults import *
from django.views.generic import DetailView, ListView
from models import Pony


urlpatterns = patterns('',
    url(r'^$',
      ListView.as_view(
         queryset=Pony.objects.order_by('-created_date')[:5],
         context_object_name='latest_pony_list',
         template_name='pony/list.html')),
    url(r'^(?P<pk>d+)/$',
      DetailView.as_view(
         model=Pony,
         template_name='pony/detail.html')),
)
Minnie the Moocher (Template)
●   Des fichiers textes
●   {{variable}} {% object.function %}
●   Boucle, instruction conditionnelle
●   Découpage en bloc, gestion de l'héritage des
    blocs
●   {{variable|filter:arg}}
Gimme some lovin' (Les formulaires)
●   Génération automatique de formulaires à
    partir d'un modèle
●   Class Forms, Fields
●   Construction à partir des POST
●   Validation automatique
●   Sauvegarde des modèles
Who's making love (La partie admin)
●   Auto générée
●   Vue de liste, de détails, de créations et de
    modifications pour chaque modèle
●   Ultra configurable (listes, tri, filtres, actions)
●   Beaucoup de documentation, mais il faut y
    plonger, voire y fouiller
Django, soyez KISS
●   Les choses compliquées sont déjà faites
●   Vous n'avez plus qu'à les utiliser
●   Authentification
●   Session
●   Cache
●   I18n
Django soyez DRY
●   Conventions pour la réutilisabilité des apps
●   Des dizaines d'apps Django, bien documentées
●   Django Packages, un repository de packages
●   Pypi est votre ami
Django soyez Python
●   Utilisez les libs Python :
    ●   CSV, Excel, odt...
    ●   Markdown, Zipfile...
    ●   Couch, Redis...
    ●   Unittest2, Nose...


●   Vive WSGI
Pony riders in the sky
●   DjangoCon
●   EuroDjangoCon
●   DjangoCong, les rencontres françaises
●   Plusieurs mailing list (dont françaises)
●   De multiples chans IRC
Des questions ?



       Raise your hand !




* Eh oui les titres des slides, ce sont des chansons de blues et non de jazz...

Mais conteúdo relacionado

Mais procurados

Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Procédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsProcédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsAddi Ait-Mlouk
 
Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Jean-Michel Doudoux
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012Jean-Michel Doudoux
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partiekadzaki
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien pauli
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHPPierre MARTIN
 

Mais procurados (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Cours php
Cours phpCours php
Cours php
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Procédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsProcédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windows
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012"Input/Ouput, 16 ans après" à Devoxx France 2012
"Input/Ouput, 16 ans après" à Devoxx France 2012
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 

Destaque

A python web service
A python web serviceA python web service
A python web serviceTemian Vlad
 
Building an API with Django and Django REST Framework
Building an API with Django and Django REST FrameworkBuilding an API with Django and Django REST Framework
Building an API with Django and Django REST FrameworkChristopher Foresman
 
REST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkREST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkMarcel Chastain
 
Python et les bases de données non sql
Python et les bases de données non sqlPython et les bases de données non sql
Python et les bases de données non sqlbchesneau
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec OdooHassan WAHSISS
 
Create responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSCreate responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSHannes Hapke
 
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidDébuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidBosco Basabana
 
Créer une api publique avec Django REST framework
Créer une api publique avec Django REST frameworkCréer une api publique avec Django REST framework
Créer une api publique avec Django REST frameworkBleemeo
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 

Destaque (10)

A python web service
A python web serviceA python web service
A python web service
 
Building an API with Django and Django REST Framework
Building an API with Django and Django REST FrameworkBuilding an API with Django and Django REST Framework
Building an API with Django and Django REST Framework
 
REST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkREST Easy with Django-Rest-Framework
REST Easy with Django-Rest-Framework
 
Python et les bases de données non sql
Python et les bases de données non sqlPython et les bases de données non sql
Python et les bases de données non sql
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Create responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSCreate responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJS
 
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidDébuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
 
Créer une api publique avec Django REST framework
Créer une api publique avec Django REST frameworkCréer une api publique avec Django REST framework
Créer une api publique avec Django REST framework
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Apache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéroApache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéro
 

Semelhante a Django by mrjmad

Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mareValtech
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Normandie Web Xperts
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptMicrosoft Technet France
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1David Herviou
 
Retour sur la certification "Zend Php 5.3"
Retour sur la certification "Zend Php 5.3"Retour sur la certification "Zend Php 5.3"
Retour sur la certification "Zend Php 5.3"François Crevola
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++cppfrug
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 
Optimisation LAMP
Optimisation LAMPOptimisation LAMP
Optimisation LAMPcyruss666
 
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...Clément OUDOT
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot frameworkgilleslenfant
 

Semelhante a Django by mrjmad (20)

JQuery
JQueryJQuery
JQuery
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScript
 
jQuery
jQueryjQuery
jQuery
 
Hello mongo
Hello mongoHello mongo
Hello mongo
 
Pas possible en drupal, c'est faux
Pas possible en drupal, c'est fauxPas possible en drupal, c'est faux
Pas possible en drupal, c'est faux
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1
 
Retour sur la certification "Zend Php 5.3"
Retour sur la certification "Zend Php 5.3"Retour sur la certification "Zend Php 5.3"
Retour sur la certification "Zend Php 5.3"
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.fr
 
Symfony Best Practices
Symfony Best PracticesSymfony Best Practices
Symfony Best Practices
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Algo poo ts
Algo poo tsAlgo poo ts
Algo poo ts
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
Optimisation LAMP
Optimisation LAMPOptimisation LAMP
Optimisation LAMP
 
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
 

Django by mrjmad

  • 1.
  • 2. Un peu d'histoire ● Born in Chic... Lawrence ● Début du projet en 2005 (21 juillet) ● Première release stable fin 2008 (la 1.0) ● Version stable actuelle : 1.3.1 ● Prochaine version : 1.4 (déjà en alpha)
  • 3. Maybe I'm wrong (ce qu'il n'est pas) ● Un CMS ● Minimaliste ● Compliqué ● Une usine à gaz ● Moins bien que les autres frameworks (en fait il est mieux)
  • 4. Turn on your love light (ses avantages) ● Bien mieux que tous les autres ● En Python ● Son ORM ● Serveur de dev ● Sa gestion des formulaires ● L'admin auto-généré ● La documentation très fournie ● Sa communauté
  • 5. MTV et pas MVC ● Models Templates Views ● Modèle = ressource ● Vue = utilisation de la ressource ● Template = rendu de la ressource (et uniquement le rendu)
  • 6. In the midnight hour (Modèle et ORM) ● Multi DB ● Définition d'une classe Model en Python ● Field ● Manager ● Queryset ● Relation (ForeignKey, Many to Many)
  • 7. Exemple de Model # -*- coding: utf-8 -*- from django.db import models from django.contrib.auth.models import User from example.models.power import SuperPower from example.models.manager import PinkManager class Pony(models.Model): name = models.CharField(max_length=120) birthday = models.DateField(null=True) power = models.ForeignKey(SuperPower) created_by = models.ForeignKey(User) created_date = models.DateTimeField(null=True) objects = models.Manager() pink_poney = PinkManager() def __unicode__(self): return u'%s' % self.name
  • 8. Groove me (Views) ● Deux façons de faire : Old et New Way ● Notions de vues génériques ● Les vues traitent les requêtes des utilisateurs ● Old Way : une vue est une fonction ● New Way : une vue est une classe ● Utilisation de MIXIN
  • 9. Going back to Miami (Routage UrlPattern) ● Pour router une requête HTTP sur une vue, Django utilise un système de Regex ● Utilisation d'arguments possible passés de l'URI à la vue from django.conf.urls.defaults import patterns, include, url urlpatterns = patterns('pony.views', url(r'^$', 'index'), url(r'^(?P<pony_id>d+)/$', 'pony_detail'), )
  • 10. Old Landmark (Views, Old Way) def pony_detail(request, pony_id): p = get_object_or_404(Pony, pk=pony_id) return render_to_response('pony/pony.html', {'pony': p})
  • 11. Perfect way (Views, New Way) from django.conf.urls.defaults import * from django.views.generic import DetailView, ListView from models import Pony urlpatterns = patterns('', url(r'^$', ListView.as_view( queryset=Pony.objects.order_by('-created_date')[:5], context_object_name='latest_pony_list', template_name='pony/list.html')), url(r'^(?P<pk>d+)/$', DetailView.as_view( model=Pony, template_name='pony/detail.html')), )
  • 12. Minnie the Moocher (Template) ● Des fichiers textes ● {{variable}} {% object.function %} ● Boucle, instruction conditionnelle ● Découpage en bloc, gestion de l'héritage des blocs ● {{variable|filter:arg}}
  • 13. Gimme some lovin' (Les formulaires) ● Génération automatique de formulaires à partir d'un modèle ● Class Forms, Fields ● Construction à partir des POST ● Validation automatique ● Sauvegarde des modèles
  • 14. Who's making love (La partie admin) ● Auto générée ● Vue de liste, de détails, de créations et de modifications pour chaque modèle ● Ultra configurable (listes, tri, filtres, actions) ● Beaucoup de documentation, mais il faut y plonger, voire y fouiller
  • 15. Django, soyez KISS ● Les choses compliquées sont déjà faites ● Vous n'avez plus qu'à les utiliser ● Authentification ● Session ● Cache ● I18n
  • 16. Django soyez DRY ● Conventions pour la réutilisabilité des apps ● Des dizaines d'apps Django, bien documentées ● Django Packages, un repository de packages ● Pypi est votre ami
  • 17. Django soyez Python ● Utilisez les libs Python : ● CSV, Excel, odt... ● Markdown, Zipfile... ● Couch, Redis... ● Unittest2, Nose... ● Vive WSGI
  • 18. Pony riders in the sky ● DjangoCon ● EuroDjangoCon ● DjangoCong, les rencontres françaises ● Plusieurs mailing list (dont françaises) ● De multiples chans IRC
  • 19. Des questions ? Raise your hand ! * Eh oui les titres des slides, ce sont des chansons de blues et non de jazz...