Le Web 2.0 avec Python et Django

Bon, alors après avoir testé un peu Python et Django, voir mon post précédent avec rss4mininova, je me suis dit que j’allais me faire une petite application Web 2.0, avec de l’AJAX, un petit truc simple mais qui en jette plein les yeux…

Alors qu’est-ce-qu’on choisit ? Et bien du javascript bien sur. Alors lequel, Dojo, Extjs ou je ne sais quel autre… Essayons Dojo avec Google, « Python Django Dojo », résultat intéressant, 1 seul. Super. On essaie, pas facile, faut connaitre le javascript, Dojo, le CSS et le HTML, tout ca pour faire un simple bouton qui affiche un « Hello World », laisse tomber.

Passons à extjs, le framework parait super, la démo est super soignée, recherche sur Google, pareil, un résultat intéressant, mais avec une ancienne version, ca compile pas, faut tout corriger et faut connaitre le javascript, extjs, le CSS et le HTML, encore des tonnes de connaissance pour afficher un « Hello World ». On oublie.

Mais que vois-je ?, Pyjamas, un super framework de la mort qui tue pour Python (et qui copie GWT de Google en moins bien), afin de faire des applis Web 2.0. Super !!! Recherche Google, presque pareil, un site intéressant, un gars a réussi à mélanger du Django et du Pyjamas, un exploit, il ne lui a fallu que 15 fichiers, 400 lignes de code pour afficher « Hello World ». Merci la simplicité.

Bon quand je vois Python, c’est cool, on fait des choses très bien, très rapidement. Quand je vois Django, ca commence à devenir moins cool, mais ca reste jouable, pour des petits sites. Quand je vois ce qu’on peut faire en Web 2.0, je dis « arrêtez !!! », vous n’êtes pas sur la bonne voie, ca ne va pas le faire.

Donc conclusion, vous voulez faire du Web 2.0, oubliez Python. Vous voulez faire des scripts de la mort qui tue et qui traitent vos fichiers, fournissent un serveur de données, penchez pour Python.

Pour tout le reste, utilisez Java… !!! 😉

Publicités

13 Réponses to “Le Web 2.0 avec Python et Django”

  1. neoty Says:

    lol
    tu arrive pas à faire ce que tu veut donc python c’est pas bien 😉
    cela te dit d’argumenter un peu?

    • iguane39 Says:

      Python, c’est très bien, d’ailleurs, j’adore. Ce que je trouve dommage, c’est son intégration avec le Web 2.0. Tu ne peux pas utiliser du python, mais uniquement du javascript. Donc c’est pourri. Dans ce cas-là, autant tout faire en javascript, Python ne sert qu’à rajouter une couche inutile. Maintenant si tu me trouves un exemple qui prouve le contraire, je suis preneur.

  2. stephaneerard Says:

    Ou alors tu fais en python une interface javascript, voir même du framework django pourquoi pas.
    Pouquoi pas faire l’un puis l’étendre par l’autre ?

    • iguane39 Says:

      Comme fais-tu en Python une interface javascript ? Mon objectif est ici de produire quelque chose rapidement, pas de créer un nouveau framework. C’est dommage tout ca. Mais je ne désespère pas, d’ici quelques années, ils fourniront quelque chose d’intéressant dans ce domaine.

  3. Kizlum Says:

    J’ai un peu du mal à comprendre le soucis.
    Certes, Django n’a pas de « built-in-killer-app-web2.0 ». D’ailleurs, je ne vois pas pourquoi il en aurait une (sauf si je ne comprend rien à ce que raconte le site officiel).
    Quand je veux faire du « 2.0 », moi c’est Django + jQuery. Le jour ou j’ai essayé cette solution, je l’ai trouvé époustouflante par sa simplicité.

    • iguane39 Says:

      En fait, le problème vient plus de la multiplication des langages. Lorsque vous êtes un expert en javascript, faire du Python-Django pour développer un site Web 2.0, c’est très bien et assez simple.
      Maintenant dans un milieu professionnel, vous maitrisez surtout des langages comme Java ou .Net qui sont utilisés pour développer des applications de gestion. Si vous devez développer un site Web en 2.0, vous ne pouvez clairement pas choisir Python, puisque vous devrez le coupler avec du javascript. Dans ces conditions, apprendre 2 langages est très restreignant. On préférera alors se tourner vers des solutions beaucoup plus facile à mettre en place, style GWT et ext-GWT, pour prendre l’exemple de Java.

      • Ali Says:

        Je ne vois pas en quoi pyjamas est plus compliqué que GWT : c’est exactement la même chose, mais en Python !
        Si tu maîtrises mieux Java et .NET alors tant mieux, utilise les !
        Mais refuser d’apprendre Javascript ou CSS tout en voulant faire du web 2.0, ça me parait un peu contradictoire, non ?

      • iguane39 Says:

        Le probleme est que si tu souhaites faire des choses simples en Web 2.0 avec Python, tu es oblige d’utiliser beaucoup de langages et d’outils. Ce qui n’est pas pour aider la productivite. Et si tu compares ces technologies avec ce qu’il est possible de faire en .Net ou Java, on s’apercoit vite que ces deux langages sont beaucoup plus productifs, puisque tu peux faire quasiment la meme chose mais avec un seul langage.

  4. stephaneerard Says:

    La multiplicité des langages ? Hmmm.
    Éclaircissons le champ, voulez-vous ?
    A chaque domaine, il y a un langage.
    Un système d’exploitation peut être vu comme un domaine, qui défini son propre langage, comme la mécanique et le garagiste qui utilisent le même vocabulaire. Rien de plus « normal ».
    Sur le web, il y a des standards quant à l’utilisation « front-end », je veux dire ce que reçoit les navigateurs : HTML, CSS et JS, le tout en différentes versions.
    Comment on produit ça, c’est le problème du service en interne.
    Que ce soit .Net, Java, PHP, Python, SmallTalk allez, on s’en fout, du moment qu’on s’y sent bien.
    Ensuite, d’un point de vue « développeur », il faut « séparer les concernes » : Un gros langage qui fait tout, ça peut faire peur, même si « ça fait tout ».
    On pourrait aussi utiliser C++ et faire de bonnes grosses libraires « qui font tout ». Allez, « qui font tout, tout seul » tant qu’on y est =D
    Ce que je veux dire, c’est que ça sert à rien de se compliquer les choses au sein d’un seul et unique langage, Apache défini un langage, Php aussi, Linux idem, bref, tout logiciel défini son propre langage. Par la suite, on peut PONTER (bridger, interfacer) ces logiciels, de différentes manières.
    La communauté Eclipse a, à mon sens, réalisé la meilleure manière de « ponter » ces choses, au travers d’EMF, qui permet de réaliser des « méta-modèles », ou plus simplement, des « modèles » qui « définissent » des « langages » qui se rapportent à des « domaines ». C’est le Domain Specific Language (entre autres).
    Donc, on va faire un « language » Linux qu’on va instancier en le liant au langage « Apache » par exemple. Ainsi on a lier deux choses « à priori » disparates : le OS et une application (Application étant un concept de OS, par la même) : Application::Apache étend OS::Linux::Application, par exemple.
    On peut aussi voir ça d’une manière complètement abstraite :
    OS::Application qui est étendu par ApacheFundation::Apache, puis créer des transformations de modèle abstrait->concret type OS::Application to OS::Linux::Application (tout les OS ont des concepts similaires…et différents, en différents points/niveaux).
    Le reste, le technique, concret (puisqu’on est ici en pleine « abstraction »), se réalise donc au travers de « transformations », de « génération de code », de « validation » (avant, c’est mieux ^^), de « mélanges de modèles », etc.

    Donc, plusieurs langages, c’est TRES bien, pourvue qu’on s’intéresse AUSSI à pouvoir les REUNIR dans un même LANGAGE qui se doit d’être ABSTRAIT (puisque son but n’est pas d’être « exécutable » mais « génératif » ou « compréhensible », bref, « ABSTRAIT »). C’est ce que permet le langage ECORE, qui est l’implémentation Eclipse de la technologie OMG MDA (qui d’ailleurs permet aussi de générer directement des applications Java, mais on peut aisément créer des transformations Php, .Net, etc., du moment qu’il y a des concepts « Objet »).

    Concernant les langages, sur Linux, il y en a plusieurs centaines, de fait. Et c’est pas bien Linux ? Ah, mais vous parlez dans une perspective de développement. Certes, mais un bon développeur sépare les concernes ! Ce qui lui permet de mieux réutiliser, capitalisant.

    Concernant la « productivité », justement, être ABSTRAIT et s’aider de transformations, de génération de code, etc pour créer le CONCRET (ce qui est exécutable, les artefacts, .exe, etc.), c’est MIEUX puisque toute la chaine peut être automatisée !

    • iguane39 Says:

      Je ne suis pas pour un seul langage qui permet de tout faire. Ce qui me pose probleme, c’est de devoir multiplier les langages pour faire ce que je veux.
      Si on imagine une equipe de developpement logiciel, qui doit savoir maitriser 4 langages pour une seule application, cela veut soit dire que l’ensemble de l’equipe maitrise les 4 langages, soit chacun maitrise un ou plusieurs langages, quitte a partager une realisation. Cela implique de faire les bons choix d’implementation, dans le bon langage, et ce n’est pas donne a tout le monde, surtout si la maitrise de l’ensemble des langages n’est pas excellente et surtout si les besoins changent et impactent fortement de fait un mauvais choix de conception.
      De plus si un des 4 langages n’est maitrise que par une seule personne du groupe, l’application developpee est dependante de cette personne. Si celle-ci part en vacances, est malade ou demissionne, les developpements court un risque important. Encore plus si vous avez inevitablement besoin des 4 langages pour faire le moindre developpement.
      Avec un langage comme Java + GWT, l’ensemble de l’equipe maitrise le sujet, a different niveau, mais peut se substituer a un autre assez facilement. Il est toujours envisageable cependant de rajouter un peu de CSS ou de javascript dans certaines parties qui le necessiteraient, mais sans reel impact si la personne experte venait a manquer a l’appel.
      C’est ici que la productivite prend tout son sens.

      • stephaneerard Says:

        On ne parle tout simplement pas au/du même niveau d’abstraction 🙂

        Concernant « ta » notion de productivté, je la conçois plus comme de la facilité dans la gestion du personnel et non comme de l’aisance dans le développement du logiciel (j’espère que tu verras le distinguo que je pose ici entre aisance et facilité : il n’y a rien de facile, mais on peut faire les choses avec aisance), deux choses distinctes, ceci dit, il se peut qu’une interface Javascript écrite en Php permette d’écrire avec aisance du Javascript, mais l’un dans l’autre, il faudra toujours savoir ce qu’on fait (il n’y a pas de notion de « onclick » en Php, par contre l’interface Php->Js doit permettre d’écrire une telle routine, donc faut savoir ce qu’on fait).

  5. Nicesun Says:

    Je ne vois pas où est la plus value entre Java + GWT et Python + Pyjamas.

    400 lignes pour faire un hello world, c’est une erreur :
    tu peux faire TRES court avec Pyjamas.
    C’est exactement le même principe que GWT.

    D’expérience, coder en python est largement plus productif que java. Mais c’est vrai, la compétence chez les devs est plus rare.

  6. labas Says:

    il existe plusieurs solutions avec django pour faire de l ajax : en voila une : http://www.dajaxproject.com/


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :