Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Django
Martin Latrille
Orange Labs
IMT/OLPS
20/11/2014
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Django, c’est quoi ?
Django, c’est quoi ?
"Le framework Web des perfectionnistes sous pression"
Framework Web écrit en Python, équivalent de :
RubyOnRails pour Ruby
Struts/Spring pour Java
Framework Web standard du Python, malgré de nombreux
concurrents :
Flask
Pyramid
Web2py
...
Prône l’unicité du code
Développé à partir de 2003, rendu public sous licence BSD en
2005
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Pourquoi choisir Django
Pourquoi choisir Django
Vitesse de développement
Nombre de features
Grande communauté
Open-source
Compatible Python2 / Python3
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Qui se sert de Django
Qui se sert de Django
Disqus, Pinterest, Instagram, Mahalo, bitbucket, lanyrd,
support.mozilla.com, addons.mozilla.org, The Onion, EveryBlock,
GiantBomb, ComicVine, MichaelMoore.com, newyorktimes.com
(represent), washingtonpost.com, guardian.co.uk, lawrence.com...
Le site d’orange.ch est fait avec DjangoCMS.
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Concept
Schéma MVC
Figure: Schéma de l’architecture MVC
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Concept
Schéma MVT
Figure: Schéma de l’architecture MVT
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Exemple
MVT (exemple de code)
Modèle :
c l a s s A r t i c l e ( models . Model ) :
"""
␣␣ D e f i n e ␣an␣ a r t i c l e
␣␣"""
name = models . C h a r F i e l d ( max_length =128)
c o n t e n t = models . T e x t F i e l d ( )
Vue :
c l a s s A r t i c l e V i e w ( django . v i e w s . g e n e r i c . View ) :
"""
␣␣ D i s p l a y ␣an␣ a r t i c l e
␣␣"""
d e f get ( s e l f , r e q u e s t , pk ) :
a r t i c l e = A r t i c l e . o b j e c t s . get ( i d=pk )
r e t u r n r e n d e r ( ’ a r t i c l e . html ’ , l o c a l s ( ) )
Template :
<html>
<body>
<h1>{{ a r t i c l e . name }}</h1>
<p>{{ a r t i c l e . c o n t e n t }}</p>
</ body>
</ html>
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
ORM
ORM
Object-Relational Manager : intermédiaire entre les objets et la
base de données.
Crée une table pour chaque modèle
Crée une ligne pour chaque instance de modèle
Met à jour la base de données en fonction des instances
Exemple
Article(name="article1", content="Salut !").save()
print Article.objects.get(name="article1").content
Salut !
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
URL dispatcher
URL dispatcher
L’URL dispatcher est l’outil qui associe une URL à une vue.
Pas d’URLs de base ; vous les définissez entièrement
Pas de limitations dans la personnalisation d’URLs
URLs écrite dans le fichier urls.py de chaque application
Exemple d’URL patterns :
u r l p a t t e r n s = p a t t e r n s ( ’ ’ ,
u r l ( r ’^$ ’ , v i e w s . HomeView . as_view ( ) ) ,
u r l ( r ’^b l o g /$ ’ , v i e w s . BlogView . as_view ( ) ) ,
u r l ( r ’^b l o g /(?P<pk >[0−9]+)/$ ’ , v i e w s . A r t i c l e V i e w . as_view ( ) ) ,
)
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils intégrés
Utilitaire django-admin / manage.py
Regroupe tous les outils intégrés de Django
Permet d’effectuer des opérations sur le projet, comme :
créer un projet
créer une nouvelle application dans le projet
lancer le serveur de développement
lancer la suite de test
initialiser la base de données
créer et effectuer les migrations nécessaires pour la base de
données
...
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils intégrés
Serveur de développement
Inclus dans Django
Ne nécessite pas de configuration
Se lance en une commande : ./manage.py runserver
Rend l’application accessible en local à l’adresse
"http ://localhost :8000/"
Ecrit les logs sur la sortie standard
Uniquement pour le développement, ne pas utiliser en
production
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils intégrés
Suite de tests
Inclus dans Django
Ne nécessite pas de configuration
Se lance en une commande : ./manage.py test
Exécute les tests unitaires présents dans les fichiers tests.py de
chaque application
Permet l’intégration continue
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils intégrés
Interface d’administration
Auto-générée par Django
Nécessite l’enregistrement des modèles de chaque application
dans le fichier admin.py de celle-ci
admin . s i t e . r e g i s t e r ( Category )
admin . s i t e . r e g i s t e r ( A r t i c l e )
Permet la gestion de la base de données via une interface
graphique (dans le style de PhpMyAdmin)
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils externes
pip
pip est un outil pour installer et gérer les paquets Python.
Gestionnaire de paquets (comme yum, apt-get...)
Dédié à la gestion des paquets Python
Permet de choisir la version du paquet
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Outils externes
virtualenv
virtualenv est un outil pour créer des environnements Python
isolés.
Permet la création d’environnements virtuels
Permet, avec pip, d’installer des versions spécifiques de
paquets spécifiques pour un projet spécifique, dans
l’environnement du projet
Permet d’avoir plusieurs projets utilisant des versions
différentes de mêmes paquets, sans conflits
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Sphinx
Sphinx est un outil permettant de générer de la documentation de
code Python à partir de commentaires formatés spécialement, les
docstring.
d e f f u n c t i o n ( x ) :
"""
␣␣ This ␣ i s ␣a␣ d o c s t r i n g
␣␣"""
r e t u r n x ∗ 2
On peut mettre des docstring dans les classes et dans les fonctions.
Elles doivent indiquer le fonctionnement de la classe/fonction
concernée.
Grâce à ces doctrings, et un petit peu de configuration, Sphinx
génère automatiquement la documentation du code, au format
LATEX, HTML, ePub, Texinfo, man pages (pages de manuel Unix)
ou texte normal.
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Table des matières
1 Introduction
2 Architecture MVT
3 Caractéristiques
4 Outils
5 Documentation
6 Conclusion
Introduction Architecture MVT Caractéristiques Outils Documentation Conclusion
Conclusion
Django est fait pour développer rapidement des applications
Web de qualité.
Il permet de factoriser le code, et grâce aux outils mis à
disposition, de se concentrer sur le développement.
Annexe
Sources
Sources I
http ://www.djangoproject.com/
http ://fr.openclassrooms.com/informatique/cours/developpez-
votre-site-web-avec-le-framework-django

Présentation de Django @ Orange Labs (FR)

  • 1.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Django Martin Latrille Orange Labs IMT/OLPS 20/11/2014
  • 2.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 3.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 4.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Django, c’est quoi ? Django, c’est quoi ? "Le framework Web des perfectionnistes sous pression" Framework Web écrit en Python, équivalent de : RubyOnRails pour Ruby Struts/Spring pour Java Framework Web standard du Python, malgré de nombreux concurrents : Flask Pyramid Web2py ... Prône l’unicité du code Développé à partir de 2003, rendu public sous licence BSD en 2005
  • 5.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Pourquoi choisir Django Pourquoi choisir Django Vitesse de développement Nombre de features Grande communauté Open-source Compatible Python2 / Python3
  • 6.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Qui se sert de Django Qui se sert de Django Disqus, Pinterest, Instagram, Mahalo, bitbucket, lanyrd, support.mozilla.com, addons.mozilla.org, The Onion, EveryBlock, GiantBomb, ComicVine, MichaelMoore.com, newyorktimes.com (represent), washingtonpost.com, guardian.co.uk, lawrence.com... Le site d’orange.ch est fait avec DjangoCMS.
  • 7.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 8.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Concept Schéma MVC Figure: Schéma de l’architecture MVC
  • 9.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Concept Schéma MVT Figure: Schéma de l’architecture MVT
  • 10.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Exemple MVT (exemple de code) Modèle : c l a s s A r t i c l e ( models . Model ) : """ ␣␣ D e f i n e ␣an␣ a r t i c l e ␣␣""" name = models . C h a r F i e l d ( max_length =128) c o n t e n t = models . T e x t F i e l d ( ) Vue : c l a s s A r t i c l e V i e w ( django . v i e w s . g e n e r i c . View ) : """ ␣␣ D i s p l a y ␣an␣ a r t i c l e ␣␣""" d e f get ( s e l f , r e q u e s t , pk ) : a r t i c l e = A r t i c l e . o b j e c t s . get ( i d=pk ) r e t u r n r e n d e r ( ’ a r t i c l e . html ’ , l o c a l s ( ) ) Template : <html> <body> <h1>{{ a r t i c l e . name }}</h1> <p>{{ a r t i c l e . c o n t e n t }}</p> </ body> </ html>
  • 11.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 12.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion ORM ORM Object-Relational Manager : intermédiaire entre les objets et la base de données. Crée une table pour chaque modèle Crée une ligne pour chaque instance de modèle Met à jour la base de données en fonction des instances Exemple Article(name="article1", content="Salut !").save() print Article.objects.get(name="article1").content Salut !
  • 13.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion URL dispatcher URL dispatcher L’URL dispatcher est l’outil qui associe une URL à une vue. Pas d’URLs de base ; vous les définissez entièrement Pas de limitations dans la personnalisation d’URLs URLs écrite dans le fichier urls.py de chaque application Exemple d’URL patterns : u r l p a t t e r n s = p a t t e r n s ( ’ ’ , u r l ( r ’^$ ’ , v i e w s . HomeView . as_view ( ) ) , u r l ( r ’^b l o g /$ ’ , v i e w s . BlogView . as_view ( ) ) , u r l ( r ’^b l o g /(?P<pk >[0−9]+)/$ ’ , v i e w s . A r t i c l e V i e w . as_view ( ) ) , )
  • 14.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 15.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils intégrés Utilitaire django-admin / manage.py Regroupe tous les outils intégrés de Django Permet d’effectuer des opérations sur le projet, comme : créer un projet créer une nouvelle application dans le projet lancer le serveur de développement lancer la suite de test initialiser la base de données créer et effectuer les migrations nécessaires pour la base de données ...
  • 16.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils intégrés Serveur de développement Inclus dans Django Ne nécessite pas de configuration Se lance en une commande : ./manage.py runserver Rend l’application accessible en local à l’adresse "http ://localhost :8000/" Ecrit les logs sur la sortie standard Uniquement pour le développement, ne pas utiliser en production
  • 17.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils intégrés Suite de tests Inclus dans Django Ne nécessite pas de configuration Se lance en une commande : ./manage.py test Exécute les tests unitaires présents dans les fichiers tests.py de chaque application Permet l’intégration continue
  • 18.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils intégrés Interface d’administration Auto-générée par Django Nécessite l’enregistrement des modèles de chaque application dans le fichier admin.py de celle-ci admin . s i t e . r e g i s t e r ( Category ) admin . s i t e . r e g i s t e r ( A r t i c l e ) Permet la gestion de la base de données via une interface graphique (dans le style de PhpMyAdmin)
  • 19.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils externes pip pip est un outil pour installer et gérer les paquets Python. Gestionnaire de paquets (comme yum, apt-get...) Dédié à la gestion des paquets Python Permet de choisir la version du paquet
  • 20.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Outils externes virtualenv virtualenv est un outil pour créer des environnements Python isolés. Permet la création d’environnements virtuels Permet, avec pip, d’installer des versions spécifiques de paquets spécifiques pour un projet spécifique, dans l’environnement du projet Permet d’avoir plusieurs projets utilisant des versions différentes de mêmes paquets, sans conflits
  • 21.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 22.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Sphinx Sphinx est un outil permettant de générer de la documentation de code Python à partir de commentaires formatés spécialement, les docstring. d e f f u n c t i o n ( x ) : """ ␣␣ This ␣ i s ␣a␣ d o c s t r i n g ␣␣""" r e t u r n x ∗ 2 On peut mettre des docstring dans les classes et dans les fonctions. Elles doivent indiquer le fonctionnement de la classe/fonction concernée. Grâce à ces doctrings, et un petit peu de configuration, Sphinx génère automatiquement la documentation du code, au format LATEX, HTML, ePub, Texinfo, man pages (pages de manuel Unix) ou texte normal.
  • 23.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Table des matières 1 Introduction 2 Architecture MVT 3 Caractéristiques 4 Outils 5 Documentation 6 Conclusion
  • 24.
    Introduction Architecture MVTCaractéristiques Outils Documentation Conclusion Conclusion Django est fait pour développer rapidement des applications Web de qualité. Il permet de factoriser le code, et grâce aux outils mis à disposition, de se concentrer sur le développement.
  • 25.
    Annexe Sources Sources I http ://www.djangoproject.com/ http://fr.openclassrooms.com/informatique/cours/developpez- votre-site-web-avec-le-framework-django