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
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
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
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
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
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.