Sortie de la version 1.0 de Django

Posté par (page perso) . Modéré par Nÿco.
Tags :
26
4
sept.
2008
Python
Prévu pour hier dans la feuille de route, le framework Django est sorti aujourd'hui. Cette version constitue une avancée majeure pour l'application.

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.
  • # Mise à jour

    Posté par (page perso) . Évalué à 5.

    À noter qu'une faille de sécurité a été révélé avant la sortie de la 1.0.

    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 (page perso) . Évalué à 0.

    Je ne sait pas si c'est moi mais, dans les framework Mega-Top-Moumoute avec ORM comme Django, RoR,Symfony, **placez ici votre ORM préféré** c'est toujours assez difficile ezt totalement inefficace d'interfacer avec une DB plus complexe que juste des relations 1-1 ou 1-many...
    Genre un truc avec une 50aines de table liées entre elle.
    • [^] # Re: ORM

      Posté par (page perso) . Évalué à 2.

      SQLAlchemy [1] s'intègre très bien dans TurboGears [2]…

      [1] http://www.sqlalchemy.org/
      [2] http://turbogears.org/
    • [^] # Re: ORM

      Posté par (page perso) . Évalué à 2.

      Et bien en fait non, il permet de realiser des liens tres complexes sur les tables. En fait, la question soulevée est interressante car django lie les tables entres elle grâce aux models. Ainsi vous pouvez accéder a des elements lié de façon tres tres lointaine sans limite (U->V->W->X->Y->Z... ).

      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 (page perso) . Évalué à 3.

        Tiens j'en profite pour poser une petite question. Comment gerer les évolutions du schéma de la bado ? Car à ma connaissance il n'y a rien dans le core de Django pour ça. Les migrations de RoR me manquent.
        • [^] # Re: ORM

          Posté par (page perso) . Évalué à 2.

          Personnellement je ne connais pas d'outil de migration.

          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 (page perso) . Évalué à 2.

          la commande ./manage.py sql application_name renvoie le code SQL pour la création. En effet ça ne permet pas la modification des tables, mais ça vous permet de savoir ce qui est nécessaire de créer comme champs :).
          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 (page perso) . Évalué à 5.

          Si les migrations t'intéresse, c'est effectivement le sujet du moment pour la communauté Django. Simon Willison propose sa méthode et fait des liens vers les différentes solutions ici :

          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 (page perso) . Évalué à 2.

          Bien, il ne me reste donc plus qu'à évaluer dmigration, django-evolution, django-schemaevolution, South, deseb et yadsel. Dites-moi si j'en oublie ;o)
    • [^] # Re: ORM

      Posté par . Évalué à 2.

      Symfony n'a pas son propre ORM, il peut utiliser aussi bien Propel [1] que Doctrine [2]. Doctrine a l'air de gérer pas mal de choses dont le many-to-many. Pour Propel, ça se fait en partie à la main.

      [1] http://propel.phpdb.org/
      [2] http://www.doctrine-project.org/
      • [^] # Re: ORM

        Posté par (page perso) . Évalué à 1.

        J'utilise Propel (le projet a été commencé avec Propel, et ce serait difficile de tout changer). Il faut parfois faire des trucs à la main, mais c'est quand même très simple à faire.
        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 (page perso) . Évalué à 1.

          "maintenant je suis plutôt convaincu"

          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 (page perso) . Évalué à 3.

    vous trouverez dans le liens suivant un PDF aide memoire sur Django et ces commandes.

    http://www.mercurytide.co.uk/media/whitepapers/django-cheat-(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.