Django (cadre web) - Django (web framework)
Auteur(s) original(aux) | Adrian Holovaty , Simon Willison |
---|---|
Développeur(s) | Fondation Django Software |
Première version | 21 juillet 2005 |
Version stable | |
Dépôt | |
Écrit en | Python |
Taille | 8,9 Mo |
Taper | Cadre Web |
Licence | BSD à 3 clauses |
Site Internet |
www |
Django ( / dʒ æ ŋ ɡ oʊ / JANG -goh , parfois stylisée comme django ) est un python à base libre et open-source framework web qui suit le modèle-template-vues (MTV) motif architectural . Il est géré par la Django Software Foundation (DSF), une organisation indépendante établie aux États-Unis en tant qu'organisation à but non lucratif 501(c)(3) .
L'objectif principal de Django est de faciliter la création de sites Web complexes basés sur des bases de données. Le framework met l'accent sur la réutilisabilité et la "pluggabilité" des composants, moins de code, un faible couplage, un développement rapide et le principe de ne pas se répéter . Python est utilisé partout, même pour les paramètres, les fichiers et les modèles de données. Django fournit également une interface administrative facultative de création, de lecture, de mise à jour et de suppression qui est générée dynamiquement par introspection et configurée via des modèles d'administration.
Certains sites bien connus qui utilisent Django incluent Instagram , Mozilla , Disqus , Bitbucket , Nextdoor et Clubhouse .
Histoire
Django a été créé à l'automne 2003, lorsque les programmeurs Web du journal Lawrence Journal-World , Adrian Holovaty et Simon Willison , ont commencé à utiliser Python pour créer des applications. Jacob Kaplan-Moss a été embauché au début du développement de Django peu de temps avant la fin du stage de Simon Willison. Il a été publié publiquement sous licence BSD en juillet 2005. Le framework a été nommé d'après le guitariste Django Reinhardt . Adrian Holovaty est un guitariste de jazz rom et un grand fan de Django Reinhardt.
En juin 2008, il a été annoncé qu'une nouvelle Django Software Foundation (DSF) maintiendrait Django à l'avenir.
Caractéristiques
Composants
Bien qu'il ait sa propre nomenclature, comme le nommage des objets appelables générant les réponses HTTP « vues », le framework Django de base peut être considéré comme une architecture MVC . Il se compose d'un mappeur objet-relationnel (ORM) qui fait la médiation entre les modèles de données (définis comme des classes Python) et une base de données relationnelle (" M odel"), un système de traitement des requêtes HTTP avec un système de template web (" V iew") , et un répartiteur d' URL basé sur des expressions régulières (" C ontroller").
Sont également inclus dans le cadre de base :
- un serveur Web léger et autonome pour le développement et les tests
- un système de sérialisation et de validation de formulaire qui peut traduire entre les formulaires HTML et les valeurs adaptées au stockage dans la base de données
- un système de modèles qui utilise le concept d' héritage emprunté à la programmation orientée objet
- un cadre de mise en cache qui peut utiliser l'une des nombreuses méthodes de cache
- support des classes middleware pouvant intervenir à différentes étapes du traitement des requêtes et réaliser des fonctions personnalisées
- un système de répartiteur interne qui permet aux composants d'une application de communiquer des événements entre eux via des signaux prédéfinis
- un système d' internationalisation , comprenant des traductions des propres composants de Django dans une variété de langues
- un système de sérialisation capable de produire et de lire des représentations XML et/ou JSON d'instances de modèle Django
- un système pour étendre les capacités du moteur de modèle
- une interface avec le framework de test unitaire intégré de Python
Applications groupées
La distribution principale de Django regroupe également un certain nombre d'applications dans son package "contrib", notamment :
- un système d'authentification extensible
- l'interface d'administration dynamique
- outils de génération de flux de syndication RSS et Atom
- un framework "Sites" qui permet à une installation Django d'exécuter plusieurs sites Web, chacun avec son propre contenu et ses propres applications
- outils pour générer des plans de site Google
- atténuation intégrée pour la falsification des demandes intersites , les scripts intersites , l' injection SQL , le craquage de mots de passe et d'autres attaques Web typiques, la plupart étant activées par défaut
- un cadre pour la création d' applications SIG
Extensibilité
Le système de configuration de Django permet de brancher du code tiers dans un projet normal, à condition qu'il respecte les conventions de l'application réutilisable. Plus de 2500 packages sont disponibles pour étendre le comportement original du framework, apportant des solutions aux problèmes que l'outil original n'a pas résolus : enregistrement, recherche, fourniture et consommation d' API , CMS , etc.
Cette extensibilité est cependant atténuée par les dépendances des composants internes. Alors que la philosophie Django implique un couplage lâche, les filtres de modèles et les balises supposent une implémentation d'un seul moteur, et les applications groupées auth et admin nécessitent l'utilisation de l' ORM interne . Aucun de ces filtres ou applications groupées n'est obligatoire pour exécuter un projet Django, mais les applications réutilisables ont tendance à en dépendre, encourageant les développeurs à continuer à utiliser la pile officielle afin de profiter pleinement de l'écosystème des applications.
Dispositions des serveurs
Django peut être exécuté en conjonction avec Apache , Nginx en utilisant WSGI , Gunicorn ou Cherokee en utilisant flup (un module Python). Django inclut également la possibilité de lancer un serveur FastCGI , permettant une utilisation derrière n'importe quel serveur Web prenant en charge FastCGI, tel que Lighttpd ou Hiawatha . Il est également possible d'utiliser d'autres serveurs Web compatibles WSGI . Django prend officiellement en charge cinq backends de base de données : PostgreSQL , MySQL , MariaDB , SQLite et Oracle . Microsoft SQL Server peut être utilisé avec django-mssql sur les systèmes d'exploitation Microsoft , tandis que des backends externes similaires existent pour IBM Db2 , SQL Anywhere et Firebird . Il existe un fork nommé django-nonrel, qui prend en charge les bases de données NoSQL , telles que MongoDB et le magasin de données de Google App Engine .
Django peut également être exécuté en conjonction avec Jython sur n'importe quel serveur d'applications Java EE tel que GlassFish ou JBoss . Dans ce cas, django-jython doit être installé afin de fournir des pilotes JDBC pour la connectivité à la base de données, qui peuvent également fournir des fonctionnalités pour compiler Django dans un fichier .war adapté au déploiement.
Google App Engine inclut la prise en charge de Django version 1.xx comme l'un des frameworks fournis.
Historique des versions
L'équipe Django désignera occasionnellement certaines versions comme des versions de "support à long terme" (LTS). Les versions LTS obtiendront des correctifs de sécurité et de perte de données appliqués pendant une période garantie, généralement 3 ans et plus, quel que soit le rythme des versions par la suite.
Version | Date | Remarques |
---|---|---|
0,90 | 16 novembre 2005 | |
0,91 | 11 janv. 2006 | "nouveau-administrateur" |
0,95 | 29 juil. 2006 | "suppression magique" |
0,96 | 23 mars 2007 | "newforms", outils de test |
1,0 | 3 sept. 2008 | Stabilité de l'API, administrateur découplé, unicode |
1.1 | 29 juil. 2009 | Agrégats, tests basés sur les transactions |
1.2 | 17 mai 2010 | Connexions de base de données multiples, CSRF , validation de modèle |
1.3 | 23 mars 2011 | Vues basées sur les classes, fichiers statiques |
1.4 LTS | 23 mars 2012 | Fuseaux horaires, dans les tests de navigateur, modèles d'applications. |
1.5 | 26 février 2013 | Prise en charge de Python 3, modèle utilisateur configurable |
1.6 | 6 novembre 2013 | Dédié à Malcolm Tredinnick, gestion des transactions db, pooling de connexions. |
1.7 | 2 sept. 2014 | Migrations, chargement et configuration des applications. |
1.8 LTS | 1 avr. 2015 | Prise en charge native de plusieurs moteurs de modèles. Support terminé le 1er avril 2018 |
1.9 | 1 déc. 2015 | Validation automatique du mot de passe. Nouveau style pour l'interface d'administration. |
1.10 | 1 août 2016 | Recherche plein texte pour PostgreSQL. Middleware de style nouveau. |
1.11 LTS | 4 avr. 2017 | Dernière version pour supporter Python 2.7. Support terminé le 1er avril 2020 |
2.0 | 2 déc. 2017 | Première version de Python 3 uniquement, syntaxe de routage d'URL simplifiée, administrateur adapté aux mobiles. |
2.1 | 1 août 2018 | Autorisation « afficher » du modèle. |
2.2 LTS | 1 avr. 2019 | Libération de sécurité. Pris en charge jusqu'en avril 2022 au moins |
3.0 | 2 déc. 2019 | Prise en charge de l'ASGI |
3.1 | 4 août 2020 | Vues asynchrones et middleware |
3.2 LTS | 6 avr. 2021 | Support étendu jusqu'en avril 2024 au moins |
4.0 | Déc 2021 | Support prolongé jusqu'en avril 2023 au moins |
4.1 | août 2022 | Support étendu jusqu'en décembre 2023 au moins |
4.2 LTS | avril 2023 | Support étendu jusqu'en avril 2026 au moins |
5.0 | décembre 2023 | Support étendu jusqu'en avril 2025 au moins |
Ancienne version
Ancienne version, toujours maintenue
Dernière version
Dernière version d'aperçu
Version future
|
Outils de développement avec prise en charge de Django
Pour développer un projet Django, aucun outil spécial n'est nécessaire, puisque le code source peut être édité avec n'importe quel éditeur de texte conventionnel . Néanmoins, les éditeurs spécialisés dans la programmation informatique peuvent contribuer à augmenter la productivité du développement, par exemple, avec des fonctionnalités telles que la coloration syntaxique . Étant donné que Django est écrit en Python, les éditeurs de texte qui connaissent la syntaxe Python sont utiles à cet égard.
Les environnements de développement intégrés (IDE) ajoutent des fonctionnalités supplémentaires, telles que le débogage , la refactorisation et les tests unitaires . Comme pour les éditeurs simples, les IDE prenant en charge Python peuvent être bénéfiques. Certains IDE spécialisés sur Python ont en outre une prise en charge intégrée des projets Django, de sorte que l'utilisation d'un tel IDE lors du développement d'un projet Django peut aider à augmenter encore la productivité. Pour une comparaison de ces IDE Python, consultez l'article principal :
Communauté
Il existe une conférence semestrielle pour les développeurs et les utilisateurs de Django, nommée « DjangoCon », qui se tient depuis septembre 2008. DjangoCon se tient chaque année en Europe, en mai ou juin ; tandis qu'un autre se tient aux États-Unis en août ou septembre, dans diverses villes. La DjangoCon 2012 s'est déroulée à Washington, DC, du 3 au 8 septembre. 2013 DjangoCon a eu lieu à Chicago à l'hôtel Hyatt Regency et les Sprints post-conférence ont été organisés au Digital Bootcamp, centre de formation informatique. La DjangoCon US 2014 est revenue à Portland , OR du 30 août au 6 septembre. La DjangoCon US 2015 s'est tenue à Austin , Texas, du 6 au 11 septembre au AT&T Executive Center. La DjangoCon US 2016 s'est tenue à Philadelphie, en Pennsylvanie, à la Wharton School de l'Université de Pennsylvanie du 17 au 22 juillet. La DjangoCon US 2017 s'est tenue à Spokane, WA ; en 2018, la DjangoCon US s'est tenue à San Diego, en Californie. La DjangoCon US 2019 s'est de nouveau déroulée à San Diego, en Californie, du 22 au 27 septembre.
Les mini-conférences Django sont généralement organisées chaque année dans le cadre de la conférence Python australienne « PyCon AU ». Auparavant, ces mini-conférences ont eu lieu à :
- Hobart , Australie, en juillet 2013,
- Brisbane , Australie, en août 2014 et 2015,
- Melbourne , Australie en août 2016 et 2017, et
- Sydney , Australie, en août 2018 et 2019.
Django a engendré des groupes d'utilisateurs et des rencontres dans le monde entier, le groupe le plus notable est l' organisation Django Girls , qui a commencé en Pologne mais a maintenant organisé des événements dans 91 pays.
Ports vers d'autres langues
Les programmeurs ont porté la conception du moteur de modèle de Django de Python vers d'autres langages, offrant une prise en charge multiplateforme décente. Certaines de ces options sont des ports plus directs ; d'autres, bien qu'inspirés par Django et conservant ses concepts, prennent la liberté de s'écarter du design de Django :
- Liquide pour Ruby
- Modèle::Swig pour Perl
- Twig pour PHP et JavaScript
- Jinja pour Python
- ErlyDTL pour Erlang
CMS basés sur Django Framework
Django en tant que framework est capable de construire un CMS complet , cependant il existe des projets CMS dédiés qui sont construits sur et étendent le framework Django. Vous trouverez ci-dessous une liste de quelques-uns des CMS les plus populaires basés sur Django :
Voir également
Les références
Bibliographie
- Jaiswal, Sanjeev ; Kumar, Ratan (22 juin 2015), Learning Django Web Development (1ère éd.), Packt, p. 405, ISBN 1783984406
- Ravindrun, Arun (31 mars 2015), Django Design Patterns and Best Practices (1ère éd.), Packt, p. 180, ISBN 1783986646
- Osborn, Tracy (mai 2015), Hello Web App (1ère éd.), Tracy Osborn, p. 142, ISBN 0986365912
- Bendoraitis, Aidas (octobre 2014), Développement Web avec Django Cookbook (1ère éd.), Packt, p. 294, ISBN 178328689X
- Baumgartner, Pierre ; Malet, Yann (2015), Haute Performance Django (1ère éd.), Lincoln Loop, p. 184, ISBN 1508748128
- Elman, Julia ; Lavin, Mark (2014), Lightweight Django (1ère éd.), O'Reilly Media, p. 246, ISBN 149194594X
- Percival, Harry (2014), Test-Driven Development with Python (1ère éd.), O'Reilly Media, p. 480, ISBN 1449364829
Cette liste est une extraction de Current Django Books