Pour ceux qui ne le connaissent pas, Django est un framework écrit en Python servant à construire des applications Web. Ce Framework est basé sur un concept MVC), est conçu pour le développement rapide, et reprend la plupart des grands principes de Python ("Explicit is better than implicit", notamment). Ce qui en fait alors la plate-forme de développement Web idéale pour les perfectionnistes sous pression.
Les grandes fonctionnalités de cette caisse à outils sont :
- Mapping relationnel-objet : vos modèles de données sont des classes Python, et vous y accédez sans taper une ligne de SQL ;
- Génération automatique de l'interface d'administration : à partir des modèles que vous avez créés, Django vous génère une interface d'administration de ces modèles très performante, vous pouvez ensuite modifier facilement les options de cette interface ;
- URLs Flexibles : les URLs sont des expressions régulières, vous n'avez aucune limite particulière imposée par le framework ;
- Un langage de template simple mais puissant : en effet, l'une des philosophies de ce template n'est justement pas de créer un langage de templates avec assignation de variables ou structures logiques complexes. Mais ce langage vous permettra d'insérer facilement vos objets python à l'intérieur de votre code HTML ;
- Localisation : Django dispose d'un support complet des applications en plusieurs langues, vous permettant de spécifier les chaînes de caractères à traduire et mettant à disposition des outils pour des fonctionnalités spécifiques au langage ;
- Cache : comme la plupart des applications web modernes , un système performant de cache est disponible (interaction avec memcached par exemple) ;
- Système de tests intégré : un des éléments les plus importants de ce framework est son système de Test_unitaire. En effet il fourni tous les outils pour construire des suites de tests très performantes, interrogeant directement le framework et incluant les assertions classiques du web (code de retour HTML, validation de formulaires), gestion des sessions d'authentification, ou même des mails envoyés.
Bien que Django mette à disposition des outils de haut niveau, permettant notamment la génération automatique de vues à partir de modèles, toutes les fonctions peuvent être facilement surclassées par vos propres gestionnaires bas niveau (gestionnaire de sessions, ORM ou cache par exemple).
Pour ceux qui connaissaient déjà, voici quelques avancées de la version 1.0 par rapport à la version stable précédente :
"Since Django 0.96, we've made over 4,000 code commits, fixed more than 2,000 bugs, and edited, added, or removed around 350,000 lines of code. We've also added 40,000 lines of new documentation, and greatly improved what was already there."
Ce qui donne a peu de choses prés :
"Depuis Django 0.96, nous avons effectué 4 000 commit de code, résolu plus de 2 000 bogues, édité, ajouté ou supprimé plus de 350 000 lignes de code. Nous avons aussi ajouté 40 000 lignes de documentation, et grandement amélioré l'existante".
En résumé :
- Support de l'Unicode ;
- Interface d'administration gérée par newsforms ;
- Ajout du support géographique (GeoDjango) ;
- Système de commentaires ;
- Support de Jython ;
- Documentation générée par Sphinx.
N'hésitez pas à visiter la page BackwardsIncompatibleChanges pour prendre connaissance de tout les changements qui pourraient impacter votre code.
Un dernier petit mot sur la documentation, au format ReStructuredText (donc très lisible en format source), et que vous pouvez grâce à Sphinx (et sous réserve d'avoir installé ce dernier), transformer en pages HTML, LaTeX, puis PDF avec un simple make html par exemple.
Et si vous n'aimez pas Python, d'autres frameworks existent comme Ruby on Rails (RoR) en Ruby, ou Symfony en PHP (ainsi que Pluf que j'ai eu l'occasion de découvrir ici même) qui, bien qu'ils aient une approche différente de la chose, conservent la même définition.
Aller plus loin
- Annonce officielle (1 clic)
- Plus d'informations sur les avancées de la version 1.0 (7 clics)
- Communauté française (7 clics)
- Capture d'ecran de l'interface d'administration (2 clics)
- Django 1.0 release notes (7 clics)
- Guide pour la migration vers la version 1.0 (8 clics)
# Mise à jour
Posté par Johan Charpentier (site web personnel) . Évalué à 5.
Elle affecte les versions :
- Django development trunk
- Django 0.96
- Django 0.95
- Django 0.91
Donc c'est peut-être une bonne raison pour mettre à jour vers la 1.0, mais si vous préférez conserver votre code, les 3 versions cités ont été corrigées.
Pour plus d'info : http://www.djangoproject.com/weblog/2008/sep/02/security/
# ORM
Posté par eMerzh (site web personnel) . Évalué à 0.
Genre un truc avec une 50aines de table liées entre elle.
[^] # Re: ORM
Posté par Émilien Tlapale . Évalué à 2.
[1] http://www.sqlalchemy.org/
[2] http://turbogears.org/
[^] # Re: ORM
Posté par Brice Leroy . Évalué à 2.
Pour illustration :
Blog.objects.filter(posts__comments__user__profile__iexact == 'robert')
ce qui renvoie les blogs ou l'utilisateur aillant un profile (sans case match) 'robert' a mis un commentaire sur aux moins des posts. (ce n'est qu'un exemple je n'ai pas creer de models pour le tester)
J'avoue avoir moi aussi assez sceptique quand a un nouveau framework ORM web mais il faut avouer que coupler a apache le resultat est performant et d'un confort de travail impressionnant (vous créez le model, django fait le reste - contrairement a cake par exemple). L'interface d'administration est livrable sans travaux (elle dispose de toute les barrieres de controle de données graces aux definition des models) et la generation de page web grace a l'heritage des templates et de leur block permet de rendre en maquette dynamique en l'espace de peu de temps (avec 1 an d'experience aujourd'hui, une page complete avec AJAX, entree client et controles me prend entre 1 et 4 heures). Ajoutez a cela que le models MVC est l'un des meilleurs pour le maintient et la modification du code, vous obtenez un environnement de developpement de tres bonne qualité.
Reste que peu ou pas d'hebergeur fournissent a prix raisonnable django ce qui le rend plus orienté pour des sites pro que pour le site perso.
[^] # Re: ORM
Posté par rhizome . Évalué à 3.
[^] # Re: ORM
Posté par Johan Charpentier (site web personnel) . Évalué à 2.
J'ai pour habitude d'exporter les données en format JSON, de les traiter avec un petit script python (l'écriture d'un json est parfaitement compatible avec les types de base de python) et de les réinjecter une fois le traitement effectué.
Ça peut en effet paraître laborieux pour les utilisateurs de RoR...
[^] # Re: ORM
Posté par mammique . Évalué à 2.
[^] # Re: ORM
Posté par Brice Leroy . Évalué à 2.
Petite note, "Comment gérer les évolutions du schéma de la bado ?" , en réalité vous écrivez le model de données en python et django génère le schéma de base de données (a l'inverse de cake comme je l'ai dit précédemment).
[^] # Re: ORM
Posté par Loïc d'Anterroches (site web personnel) . Évalué à 5.
http://simonwillison.net/2008/Sep/3/dmigrations/
Le fait est qu'il n'existe pas de méthode standard/officielle pour le moment. Maintenant, il y a un désir de la part des développeurs d'arriver à ajouter cela par défaut, donc cela arrivera bien vite.
[^] # Re: ORM
Posté par rhizome . Évalué à 2.
[^] # Re: ORM
Posté par rewind (Mastodon) . Évalué à 2.
[1] http://propel.phpdb.org/
[2] http://www.doctrine-project.org/
[^] # Re: ORM
Posté par DLFP est mort . Évalué à 1.
Enfin, il arrive parfois qu'il y ait des requêtes à faire à la main (et encore, il y a pas mal d'outils pour faciliter la tâche, Creole ou PDO suivant la version de Propel), et on peut facilement utiliser les fonctions "hydrate" pour revenir dans du Propel.
J'étais parmi les sceptiques au départ - surtout qu'écrire du SQL ne m'a jamais dérangé, au contraire - mais maintenant je suis plutôt convaincu.
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: ORM
Posté par desfrenes (site web personnel) . Évalué à 1.
Je ne peux que t'inviter à tester Doctrine, au moins pour de nouveaux projets, c'est encore mieux que propel.
# Aide mémoire
Posté par Brice Leroy . Évalué à 3.
http://www.mercurytide.co.uk/media/whitepapers/django-cheat-(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.