Aller au menu - Aller au contenu

Le framework web Django atteint la version 1.2

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : anonyme,
Publié : le 18/05/2010 à 22:36:56
Catégorie : Programmation
Visualisations : 13 011

Licence : Creative Commons BY SA

Le framework web Django atteint la version 1.2

Une nouvelle version du célèbre framework web Django, conçu pour le langage Python, vient d'être publiée ce lundi 17 mai. Plusieurs nouveautés accompagnent cette mise à jour, tant au niveau du langage de templates que de la validation ou de syndication. Aucune révolution n'est annoncée, mais les mises à jour présentées confirment les points forts du framework.

Django se développe, et la communauté grandit



Image utilisateur
À la fois simple et relativement complet, Django vise à aider le programmeur à développer un site web simplement et rapidement, en simplifiant sa gestion des données et en lui proposant des modules ou fonctionnalités tout prêts, mais extensibles (comme une page d'administration, ou l'envoi d'e-mails, par exemple pour confirmer une inscription). Afin de proposer une séparation claire entre la présentation des données, et leur gestion propre, Django respecte le paradigme MVC, ou plutôt MTV comme aiment à le dire les développeurs du framework. Vous trouverez plus d'explications sur le rôle de Django dans la très complète news de delroth sur Django 1.0.

Cette nouvelle version arrive un peu moins d'un an après la 1.1, qui elle-même suivait la 1.0 d'environ 10 mois. Le rythme de développement de Django est donc stable, l'équipe prenant le temps de faire mûrir et de tester le framework comme il se doit (la version alpha de Django 1.2 date ainsi du début de l'année). Toutefois, cette évolution ne suit pas celle du langage Python (utilisé par Django), puisque le framework n'est toujours pas compatible avec Python 3. Django suit le rythme des nombreuses applications développées en Python qui préfèrent assurer la compatibilité ascendante, c'est à dire avec les vieilles versions de Python. Ainsi, il reste compatible avec Python 2.4, une version datant tout de même de 2004 (la 2.3 n'est cependant plus supportée).

Souvent comparé au framework symfony, Django est donc réellement apprécié par les "perfectionnistes sous pression", pour reprendre la devise du framework. Au fil des ans, une véritable communauté s'est donc créée. Pour les francophones, il existe par exemple le site Django-Fr.org, ou, le mois dernier, la conférence Django Cong' à Marseille. Le nombre de sites utilisant Django ne cesse de croître, et un grand nombre sont référencés sur DjangoSites.org.

Les nouveautés de la version 1.2



Plusieurs fonctionnalités intéressantes ont été rajoutées à Django depuis la version précédente. Le site Django Advent, construit comme un calendrier de l'avent, répertorie et détaille ces innovations, dont voici tout de même une liste sommaire :

Support de plusieurs bases de données au sein d'un même projet



La moindre des tâches d'un framework comme Django est de simplifier la gestion des bases de données, en remplaçant du mieux que possible les requêtes SQL par une liaison objet-relationnel (abrégée ORM). Les modèles définis par le programmeur remplacent alors les requêtes et on peut même faire abstraction de la base de données réellement utilisée : le code ne diffère pas selon que c'est MySQL, PostgreSQL ou même Oracle qui tourne dessous.

Avant la version 1.2 cependant, une seule base de données pouvait être utilisée de la sorte pour chaque projet. Cette nouvelle version corrige le tir, et permet par exemple de mixer MySQL pour un certain modèle, et PostgreSQL pour un autre, sans pour autant modifier le reste de l'application.

Validation des données



Image utilisateur
Un des grands principes de l'informatique est de ne pas se fier aveuglément aux données entrées par l'utilisateur. Par exemple, il faut systématiquement vérifier qu'une adresse e-mail entrée lors d'une inscription est valide, afin que toute l'application fonctionne correctement. Mais de telles vérifications sont bien souvent fastidieuses, et parfois bâclées par les développeurs.

Django 1.2 propose donc le nécessaire pour valider simplement un modèle, en distinguant trois phases : d'abord, valider une entrée isolée (par exemple, "est-ce que l'adresse e-mail a la bonne forme ?"). Ensuite, valider le modèle entier ("est-ce qu'un utilisateur peut avoir une telle adresse e-mail ?"). Enfin, Django permet également de vérifier simplement l'unicité d'une entrée ("est-ce qu'il existe déjà un membre avec cette adresse e-mail ?"). Au niveau du code, ceci se traduit par les méthodes clean_fields, clean et validate_unique de la classe Model.

Protection contre les failles CSRF



Les failles de type CSRF consistent, pour un pirate, à faire exécuter par un autre membre une requête à son insu. Par exemple, si sur un forum il est possible de supprimer un message par une requête GET (transmise sous forme de lien au serveur), il peut suffire qu'une fausse image, ayant pour source le-dit lien, entraîne la suppression du message lorsque le navigateur d'un administrateur tente de récupérer l'image en question.

Django permettait déjà de lutter contre ces failles dans les versions précédentes. Cependant, une nouvelle façon de se défendre apparaît avec la version 1.2. Elle permet ainsi d'utiliser le tag csrf_token dans un formulaire, pour contrôler la validité d'une action de l'utilisateur. En cas d'action invalide, le serveur répond alors par défaut par une erreur de type 403, mais cette réponse peut être adaptée.

Amélioration des templates



Le langage de templates de Django, qui permet d'agir sur la vue affichée chez l'utilisateur, a lui aussi été mis à jour. D'abord, le mot clef if supporte désormais de vraies expressions conditionnelles. Auparavant, des mots particuliers étaient utilisés, pour éviter que les programmeurs ne surchargent les vues, cassant le paradigme MVC. Cependant, il est certainement plus agréable d'écrire

Code : Autre
1
2
3
{% if a != b %}
 ...
{% endif %}


que l'ancien

Code : Autre
1
2
3
{% ifnotequal a b %}
 ...
{% endifnotequal %}


Le système de mise en mémoire cache des templates a également été amélioré, améliorant les performances pour les vues composées de templates répartis dans plusieurs fichiers (auparavant, ceux-ci étaient chargés à nouveau depuis le disque). Il est également plus facile d'utiliser un autre système de templates que celui de Django, comme Jinja2.

D'autres mises à jour



Un certain nombre d'autres nouveautés ou d'améliorations sont là : par exemple, un framework de gestion des messages fait son apparition. Il améliore la gestion des messages privés de Django. Le très réputé système d'authentification de Django a également été amélioré, offrant une gestion plus fine des droits au sein d'une application. Enfin, citons les flux de syndication accessibles en tant que vues, l'envoi d'e-mails depuis Django ou même le support de la géolocalisation, qui sont désormais tous trois plus riches.

Django, un framework complet



Image utilisateur
Bien que certains continuent de regretter la non-intégration du puissant framework SQLAlchemy au sein de Django (ce qui n'empêche en rien d'utiliser les deux), cette version confirme la maturité de Django : capable d'évoluer en préservant la compatibilité avec de vieilles versions, sans pour autant refuser l'évolution et les nouvelles fonctionnalités, simple d'utilisation mais néanmoins performant, il continue d'être une option intéressante pour qui souhaite développer rapidement un site web communautaire complet.

Django peut être utilisé conjointement au serveur web Apache à l'aide des modules mod_python ou mod_wsgi. Il supporte également le FastCGI, ce qui permet de l'utiliser avec un grand nombre de serveurs. Plusieurs hébergeurs permettent d'héberger des sites réalisés avec Django, dont le francophone Alwaysdata, qui propose des offres gratuites.

Liens divers :


57 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  Suivante
Hors ligne Liek # Posté le 18/05/2010 à 22:39:51
Avatar

Très bonne news, j'ai testé django est un très bon framwork cette version 1.2 est un réjouisse-ment !
Hors ligne 6pri1 # Posté le 18/05/2010 à 22:41:04
IGWT
Avatar
Flux RSS

Ville : Versailles
Pays : France métropolitaine

Si seulement j'arrivais à installer ce merveilleux framework... Ah, quel doux rêve !
Note : Alwaysdata propose cette nouvelle version de Django, ils ont été très rapides sur le coup.
 
Hors ligne anonyme # Posté le 18/05/2010 à 22:41:19

Notes : le tutoriel de .skaz présent sur ce site est malheureusement un peu dépassé ; Cam et Natim devaient en écrire un nouveau, malheureusement ça n'a pas été fait.

Le tutoriel cité à la fin de la news devrait toutefois suffire si vous connaissez déjà Python (et pour cela, il y a le tutoriel de Prolixe ou le cours de Gérard Swinnen - ou bien d'autres !). Enfin, pour avoir un coup de main, n'hésitez pas à poster sur le forum Autres Langages, ou à consulter les canaux IRC #django-fr sur irc.freenode.net ou #python sur irc.epiknet.org .
Hors ligne Zhela # Posté le 18/05/2010 à 22:41:29
Avatar

Ville : Court-st-etienne
Pays : Belgique
Études : Université catholique de Louvain

Ha, c'est assez tentant :)
 
Hors ligne 6pri1 # Posté le 18/05/2010 à 22:42:01
IGWT
Avatar
Flux RSS

Ville : Versailles
Pays : France métropolitaine

Je crois que Natim y bosse, hein. Mais ça doit pas avancer très vite, en effet.
 
Hors ligne timmalos # Posté le 18/05/2010 à 22:50:25
Avatar

Études : INSA Lyon

Cela vaut il vraiment Zend Framework? Pas sur ;) Pour moi , qui ait testé la version 1.1 et Zend 1.10 j'ai préféré le dernier par ses plus grandes facilités pour un développeur du dimanche comme moi qui ne respecte pas toujours le MVC.
Ca ne reste qu'un point de vue personnel, mais j'ai également eu peur de cette histoire de Python 2.3/2.4 qui va bien finir par disparaitre un jour, la 3.0 va bien devoir s'imposer et les applications peuvent etre difficiles à mettre à jour, on peut donc prevoir une version prochaine avec très peu de nouvelles possibilités, car les développeurs auront mis l'accent sur la mise à jour.

Image utilisateur
 
Hors ligne anonyme # Posté le 18/05/2010 à 22:52:20

timmalos> Selon toutes les sources que j'ai pu lire, si :) .

Django est peut-être plus rigoureux au niveau du MVC, c'est à voir. Ce qui est mis en avant en tout cas, c'est son meilleur ORM et sa plus grande simplicité (ainsi que ses meilleures performances, qui reflètent sans doute celles de Python - ceci valant également pour Ruby on Rails, naturellement). Quant à Python, pas d'inquiétudes : comme ça a été dit lors du passage à Python 3, les outils pour faire migrer un code sont nombreux, et il faudra à mon avis bien des années avant que Django n'abandonne totalement Python 2.
Hors ligne Hilaia # Posté le 18/05/2010 à 23:05:38
C'est la fin du début...
Avatar
Groupe : Anciens

Ville : Profondeville
Pays : Belgique

Merci pour l'info, c'est intéressant.
Pour Alwaysdata, ils ont effectivement été très rapides !

Dropbox: Obtenez 250Mo supplémentaires en étant parrainé sur ce service de synchronisation de données.
Peut servir à tout, et juste génial pour gérer ses projets gratuitement.
 
Hors ligne Romain Tribes # Posté le 18/05/2010 à 23:09:54 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne Debs # Posté le 18/05/2010 à 23:23:02
...
Avatar

Ville : Sion
Pays : Suisse

Passer à Python et coder mes futurs sites avec Django me tentent de plus en plus.
Il faut juste que je trouve la motivation (surtout pour l'installation sous Windows :-° )

Publicité gratuite ici, contactez moi :) The Advertising is a Lie.

Image utilisateur
 
Hors ligne Skety # Posté le 18/05/2010 à 23:25:21
Avatar

Ville : Abidjan
Pays : Côte d'Ivoire

Merci iPoulet pour la news, c'est bon d'avoir des nouvelles d'un si "prometteur" projet.

Cependant, qu'en est-il de Django sous Windows ?

Ton sujet est résolu ? Ta préoccupation est satisfaite ? Ton interrogation est réglée ?
Merci de marquer ton sujet résolu ! :) (Il y a un joli bouton tout en haut pour ça)
Ça aidera plus d'un...

Aidant d'un jour : Aucune projet en vue. Quel galère ...!
 
Hors ligne 6pri1 # Posté le 18/05/2010 à 23:29:51
IGWT
Avatar
Flux RSS

Ville : Versailles
Pays : France métropolitaine

Je pense que c'est toujours aussi galère.
 
Hors ligne MathX # Posté le 18/05/2010 à 23:30:23
Übermensch.
Avatar
Groupe : Anciens

Ville : Aubel
Pays : Belgique

Citation : Skety
Cependant, qu'en est-il de Django sous Windows ?

Le serveur de dev est fonctionnel, Python n'est pas multi-OS pour rien.

Image utilisateur
Image utilisateur
 
Hors ligne anonyme # Posté le 18/05/2010 à 23:38:05

Debs, Skety, 6pri1> Plus vous serez nombreux à essayer et à communiquer, et plus ça sera facile pour les autres : courage, partagez vos expériences sur vos blogs respectifs ou sur le forum, et posez des questions sur #django-fr, pourquoi pas :) .
Hors ligne 6pri1 # Posté le 18/05/2010 à 23:46:17
IGWT
Avatar
Flux RSS

Ville : Versailles
Pays : France métropolitaine

Ben justement moi j'aimerais bien y arriver. Mais bon, même sous Linux ça marche pas alors... ça doit venir de moi.
 
Hors ligne Waziff # Posté le 18/05/2010 à 23:50:25

Il y a encore du chemin avant de pouvoir rattraper symfony ;) mais mieux vaut ne pas aller vite en besogne et bâcler le travail.

En tout cas j'espère que la communauté continuera à se développer et que pleins de tutos fleuriront sur le site du zéro ( et ailleurs également ) afin de rendre hommage à ce framework intéressant dont je suis un grand fan depuis quelque temps. :)
Hors ligne Debs # Posté le 18/05/2010 à 23:52:06
...
Avatar

Ville : Sion
Pays : Suisse

Je vais essayer ces jours-ci, je vais bien y arriver.
Promis si je trouve, je me fait un blog rien que pour cet article :D

Publicité gratuite ici, contactez moi :) The Advertising is a Lie.

Image utilisateur
 
Hors ligne planete.game57 # Posté le 19/05/2010 à 00:13:51
Avatar

Études : IRIS

Merci pour avoir détaillé les fonctionnalités de cette version 1.2 de Django.

J'aurais peut-être l'occasion de le tester d'ici peu. :)

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne Maxibolt # Posté le 19/05/2010 à 00:29:24
E Ultreïa
Avatar
Groupe : Bannis

Je n'ai eu aucun problème à faire fonctionner Django sous windows. Il suffit de suivre les explications données sur le site officiel, et le serveur de développement fonctionne très bien.

Après, pour faire de la production, il est de toute façon préférable de passer sur un hébergeur (comme Alwaysdata, avec lequel j'ai commencé à utiliser django, et qui fonctionne très bien également).

« J'entends par "valeur publique" ce qui fut le sens de l'honneur, puis le sens du sacré, puis la "bonne morale" de la IIIeme, et qui est actuellement "5 fruits et légumes par jour", et "penser à mettre une capote" »

Statistiques de l'activité sur les forums du sdz.
 
Hors ligne Mimos@ # Posté le 19/05/2010 à 00:54:12
Avatar

Question : Sous symfony, on peut a partir d'un fichier SQL ou YAML construire son application. En est-il de même sous Django ? Ou faut-il créer obligatoirement les classes soit même ?

Sinon de se que j'ai pu voir dans la doc, Django à l'air d'avoir un très bon moteur de template.

Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro;
RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7;
DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3;
Carte Graphique: Sapphire HD4890 Vapor-X 1Go;
Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520.
 
Hors ligne anonyme # Posté le 19/05/2010 à 01:08:18

Mimos@> Pourtant, beaucoup reprochent son moteur de templates à Django, et préfère utiliser des alternatives comme Jinja ou Cheetah, ce qui n'est pas difficile. En tout cas il y en a pour tous les goûts :) .
Hors ligne sidarape # Posté le 19/05/2010 à 06:02:56
Voici votre E.P.P.Z monsieur!
Avatar

Ville : Québec, qc
Pays : Canada
Études : Cégep Sainte-Foy

Ça veut dire quoi « le framework n'est toujours pas compatible avec Python 3. » ? Est-ce que si j'installe Django 1.2 sur un serveur où il est installé Python 3, ça ne marchera pas? Est-ce si difficile pour les langages de programmations de garder une certaine compatibilité avec les précédentes versions même si ça peut causé des failles de sécurité?

Image utilisateur

Vive le Québec Libre!!!
 
Hors ligne spider-mario # Posté le 19/05/2010 à 08:07:44
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

Citation : sidarape
Ça veut dire quoi « le framework n'est toujours pas compatible avec Python 3. » ? Est-ce que si j'installe Django 1.2 sur un serveur où il est installé Python 3, ça ne marchera pas?

Seulement s'il n'y a que Python 3 sur le serveur. S'il y a aussi Python 2, ça ira.

Citation : sidarape
Est-ce si difficile pour les langages de programmations de garder une certaine compatibilité avec les précédentes versions même si ça peut causé des failles de sécurité?

En l'occurrence, l'arrêt de la compatibilité avec les versions précédentes a été un choix délibéré pour nettoyer le langage :
  • print "test" print("test") (note : ça fonctionne aussi sous Python 2)
  • test = raw_input() test = input() (input existe en Python 2 mais c'est équivalent à eval(raw_input()) ).

Si l'on a besoin de faire tourner un code prévu pour Python 2, on utilise Python 2.

Edit : parenthèse corrigée, mais elle n'était pas dans le code donc si, ça aurait fonctionné quand même ;)
Hors ligne Zenky # Posté le 19/05/2010 à 08:54:38
Z comme Zenky
Avatar

Études : UTC

Citation : spider-mario
Citation : sidarape
Ça veut dire quoi « le framework n'est toujours pas compatible avec Python 3. » ? Est-ce que si j'installe Django 1.2 sur un serveur où il est installé Python 3, ça ne marchera pas?

Seulement s'il n'y a que Python 3 sur le serveur. S'il y a aussi Python 2, ça ira.

Citation : sidarape
Est-ce si difficile pour les langages de programmations de garder une certaine compatibilité avec les précédentes versions même si ça peut causé des failles de sécurité?

En l'occurrence, l'arrêt de la compatibilité avec les versions précédentes a été un choix délibéré pour nettoyer le langage :
  • print "test" print("test") (note : ça fonctionne aussi sous Python 2)
  • test = raw_input() test = input() (input existe en Python 2 mais c'est équivalent à eval(raw_input()) )).

Si l'on a besoin de faire tourner un code prévu pour Python 2, on utilise Python 2.


T'as fermé une parenthèse en trop, ça ne compilera jamais... :euh:
Hors ligne bluestorm # Posté le 19/05/2010 à 09:38:05
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

Merci pour la news.

Pour avoir regardé un peu des projets sous Django, c'est effectivement très facile à utiliser.
Je n'aime pas beaucoup, par contre, l'omniprésence de l'ORM (SqlAlchemy a l'avantage de permettre l'écriture de requêtes relationnelles si on le souhaite), et le comportement vis-à-vis de l'autoescape (certaines chaînes marquées comme Safe, d'autre non, etc.) qui est un peu foireux, même si ça reste mieux que ce qu'on fait traditionnellement en PHP par exemple. J'aurais préféré quelque chose de plus rigide où on marque les conversions explicitement, pour être sûr de ne pas se tromper. Actuellement, le comportement par défaut est plutôt de ne pas y penser et de laisser Django s'en occuper, mais Django ne peut pas connaître la bonne fonction d'échappement (qui dépend forcément de la provenance et du lieu d'utilisation des données); il vaudrait mieux forcer l'utilisateur à se préoccuper de cet aspect si on veut des applications sûres.
 
Hors ligne sushis # Posté le 19/05/2010 à 09:55:36
Avatar

Dites moi, j'avoue n'avoir regarder que le premier paragraphe (et lu les autre en diagonal :D ), mais est-ce que ce framework à la même fonction que Drupal?

L'embellie des scaphandres n'a d'égale que la renommée des trompettes bien qu'elle doive, ultérieurement, donner naissance à son destin...
Image utilisateur
 
Hors ligne bluestorm # Posté le 19/05/2010 à 11:00:26
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

Drupal est plus orienté CMS et Django plus orienté "Web framework" : Drupal essaie de te laisser créer un site sans écrire une seule ligne de code, alors que Django essaie de t'aider à coder toi-même ton site, en utilisant ses bibliothèques logicielles.

Ceci dit, la limite entre les deux reste souple, car Drupal propose aussi des composants programmables réutilisables, et django automatise une bonne partie du déploiement du site.
 
Hors ligne Natim # Posté le 19/05/2010 à 11:58:12
Apprendre à coder c'est coder
Avatar
Groupe : Anciens
Flux RSS

Ville : Belfort
Pays : France métropolitaine

Bonjour,

On a en effet commencé un tutoriel avec Cam, on y travaille sur notre temps libre mais maintenant que Django 1.2 est stable on va pouvoir s'y mettre plus sérieusement.

Django 1.2 c'est du régal. Et un LdZ sur Django ça me dirait bien.

Fouette cocher !

Très bonne news. Merci aux rédacteurs.
 
Hors ligne Yrahen # Posté le 19/05/2010 à 12:07:07
Avatar

Bonjour,

Avec cette news je viens d'apprendre qu'on peut faire du web avec Python :-°
J'aurais voulu savoir l'interet d'utiliser python pour le web a la place de php?
Merci :)

Pourquoi remettre a demain ce que l'on peut faire la semaine prochaine? :)
 
Hors ligne 6pri1 # Posté le 19/05/2010 à 12:47:30
IGWT
Avatar
Flux RSS

Ville : Versailles
Pays : France métropolitaine

Je t'invite à rechercher avantages Django sur le site de ce cher ami Google.
Un des arguments qu'arborent les Djangoteux est que Django offre une interface d'administration qui se crée toute seule.
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news