IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

[Django VS Rails] Donnez des arguments


Sujet :

Django Python

  1. #21
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    bref pourquoi choisir django et pas rails ? :p

  2. #22
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Citation Envoyé par kedare Voir le message
    bref pourquoi choisir django et pas rails ? :p
    Pourquoi choisir Rails et pas Django?

  3. #23
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    pour tout ce qui est dit avant

    et pour SOAP jamais fait alors ?

  4. #24
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Pourquoi choisir Rails et pas Django?
    parceque c'est plus utilisé , il y a plus de plugins :p

  5. #25
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Citation Envoyé par kedare Voir le message
    parceque c'est plus utilisé , il y a plus de plugins :p
    C'est aussi plus lent, plus gourmand en mémoire, ça utilise un langage moins connu qui possède moins de librairies, ça utilise un mix de serveurs web (Apache + Mongrel + ngnix) pour rouler les applications et la documentation est mauvaise.

    Si tu te fiais tout le temps à la popularité pour faire tes choix de technologies, tu serait encore sur PHP et Ruby on Rails aurait jamais connu la popularité qu'il a présentement.

    Django possède des avantages qui ont déjà été mentionné. Visite le site de Django pour plus d'informations.

  6. #26
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Si tu te fiais tout le temps à la popularité pour faire tes choix de technologies, tu serait encore sur PHP et Ruby on Rails aurait jamais connu la popularité qu'il a présentement.
    +1

  7. #27
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Si tu te fiais tout le temps à la popularité pour faire tes choix de technologies, tu serait encore sur PHP et Ruby on Rails aurait jamais connu la popularité qu'il a présentement.
    c'est une des raisons du choix de Django par ma boite, récupérer despersonne élitiste plutot qu'une masse à la PHP, la notoriété + facilité pose quelques fois des sacrés problemes ...

  8. #28
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    En tout cas GnuVince ton prosélytisme donne bien envie d'essayer Django

    @++

  9. #29
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Citation Envoyé par kedare Voir le message
    j'aime bien le systeme de sous-template de rails (enfin je sait pas si on peut appeler ca comme ca) , je parle des render :partial, qui permet de re-utiliser le meme template dans une partie de page differentes , il doit y avoir la meme chose chez django mais j'ai pas trouvé
    Pour inclure un Template dans un autre on utilise le tag "ssi" ou tout simplement "include". Ceci dis je trouve cette façon de faire pas très propres car au final on se perd vite à la relecture du Template.

    Je préfère, au lieu d'insérer de gros morceaux dans un Template, découper en plus petit en créant des Tags de Template personnalisés, ainsi on garde un maximum d'information dans le Template tout en diminuant son encombrement.

    Sinon je ne sais pas si c'est le cas de Rail, mais une fonction que je trouve excellente en Django c'est le fait qu'un Template peut hériter d'un autre c'est vachement pratique et très bien pensé, ainsi dans les Template parents on peut créer plein de block vide, qu'on remplira à l'envi dans les sous Template.

    Citation Envoyé par kedare Voir le message
    par contre il y a pas mal de chose que je n'aime pas dans python , deja le fait que les variable locale privée doivent commencer par un _ , exemple : _name ....
    variables locales et privés ce n'est pas la même chose.
    Les variables locales, c'est à dire celles dont la portée ne dépasse pas la fonction ou la méthode où elles sont définie ne sont soumises aucunes règles d'écriture particulières.
    Par contre quand on commence le nom d'une méthode ou attribue par _ le nom en question est remplacé par l'interpréteur à l'exécution, les rendant ainsi (méthode ou attribue) non accessible à l'extérieur de la classe.

    Citation Envoyé par kedare Voir le message
    aussi le fait que tout les objets n'hérite pas d'object est etrange ...
    En python tout est objet, même les classes héritent du type objet.

  10. #30
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Vu que la AJAX c'est plus le côté design et que c'est mon co-équipier qui s'en occupe, je suis moins au courant. On utilise jQuery et ça semble aller parfaitement bien.
    Justement je suis en train de regarder quelle solution choisir, ce matin j'ai jeté un coup d'œil à JQuery, que j'ai trouvé très bien (pour ce que j'ai à en faire) j'ai bien aimé le fait que tout le code JavaScript est regroupé en un seul endroit (au début) et non éparpillé un peu partout dans la page.
    Si après votre utilisation de cette lib avec Django pour avez des recommandations ou des mises en garde particulières à faire, je serai preneur. (d’avance merci).

  11. #31
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Citation Envoyé par kedare Voir le message
    bref pourquoi choisir django et pas rails ? :p
    Ça dépend de beaucoup de choses:
    - De l'utilisation qu'on a à en faire.
    - De notre degré de connaissance (en Python ou en Ruby).
    - De l'environnement dans lequel on va implémenter la solution.
    - De notre façon de penser et de travailler.
    etc etc.

    A mon avis le monde de l'information est assez large pour accepter les deux Framework et bien plus encore, ce qui compte au final ce n'est pas de savoir le quelle est le meilleur mais plutôt lequel réponds le mieux à nos besoins et a notre problème du moment et/ou futur.

  12. #32
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Ozatorenator je penses que tu essais d'expliquer des concepts a quelqu'un de plus callé que toi, à mon avis kedare a déjà un bon paquet d 'experience de ruby/python et tu n'as pas du comprendre ce qu'il dit vis à vis de l'héritage d "object"

    En effet en python il y a 2 notation d'objet, la nouvelle permetant des manipulations beaucoup plus puissante que l'ancienne et surtout beaucoup plus "objet" (surtout niveau typage) mais pour utiliser des classes de ce type il faut forcer l'héritage d' "object"

    un exemple sera plus claire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Old:pass
    class New(object):pass
     
    old = Old()
    new = New()
     
    print type(old)
    print type(new)
    print :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <type 'instance'>
    <class '__main__.New'>
    dans l'ancienne notation les objet etait des "instance d'une classe" alors que maintenant c clairement une "instance de class New"
    Il y a égallement de nouvelle possibilités niveau metaprogrammation et aussi la superbe fonction __new__().

    Bref 2 systeme de class cote a cote c'est un peu bordelique... python souffre beaucoup d'une trop forte compatibilité ascendante qui empeche d'avoir un language homogéne ...

    Enfin bon vivement python 3.0

  13. #33
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    A partir du Python 2.2 le type prédéfini object est l’ancêtre de tout les types prédéfinis et de toutes les classes. En d’autre terme tout ce qui existe dans python hérite d’object.
    En reprenant ton exemple cela donnera un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    >>> class UneClasse:
    ...     pass
    ...
    >>> class UnType(object):
    ...     pass
    ...
    >>>
    >>> uneClasse = UneClasse()
    >>> unType = UnType()
    >>>
    >>> isinstance(UneClasse, object)
    True
    >>> isinstance(UnType, object)
    True
    >>> isinstance(uneClasse, object)
    True
    >>> isinstance(unType, object)
    True
    Par contre les deux objets UneClasse et UnType sont différent dans le sens où le premier est de type 'classobj' mais le deuxieme est de type 'type' mais n’en reste pas moins que ce sont tout deux des descendant du premier type ‘object’.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> isinstance(UneClasse, type)
    False
    >>> isinstance(UnType, type)
    True
    >>> type(UneClasse)
    <type 'classobj'>
    >>> type(UnType)
    <type 'type'>
    Ainsi en précisant explicitement qu'une classe hérite du type 'object' on en fait un 'type' ce qui est logique car 'object' est de type 'type'.

  14. #34
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    mouarf tu viens de me prouver que c encore plus bordelique que ce que je pensais !

    tu trouve ca normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class New(object):pass
    class Old:pass
     
    print issubclass(New, object)
    print issubclass(Old, object)
    print Old is object
    C normal que les instance de Old soit une instance d'object sans que Old soit cette classe ou une sous classe d'object ? moi je ne trouve pas cela normal du tout ...

    autre chose si Old est une instance d'object (c'est renvoyé comme True par python) pkoi n'as t'on pas acces aux membres d'object ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Old:pass
    old = Old()
    print isinstance(Old, object)
    print dir(object)
    print Old.__new__()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    True
    ['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__']
    Traceback (most recent call last):
      File "C:\Users\Anthyme\Projects\Pydev\Eneide\src\test.py", line 5, in <module>
        print Old.__new__()
    AttributeError: class Old has no attribute '__new__'
    Escuse moi mais une instance d'une classe qui n'as pas acces aux membre de cette classe (a moins d'etre obliger de "forcer" l'héritage) c'est tout sauf de la POO et c'est vraiment deguelasse...

    Certe en jouant sur les mot ce sont tous des instances d'object comme tu le dis mais malgres ce que tu dis les classes n'héritent pas d'object et ce paradoxe est vraiment moche...

  15. #35
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    legere erreur de ma part mais ca revient au même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Old:pass
    old = Old()
    print isinstance(Old, object)
    print dir(object)
    print old.__new__()
     
     
    True
    ['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__']
    Traceback (most recent call last):
      File "C:\Users\Anthyme\Projects\Pydev\Eneide\src\test.py", line 5, in <module>
        print old.__new__()
    AttributeError: Old instance has no attribute '__new__'

  16. #36
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Citation Envoyé par Ozatorenator Voir le message
    En python tout est objet, même les classes héritent du type objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> super(str) #pourquoi pas str.super ?
    <super: <class 'str'>, NULL>
    la faut croire que non
    mais la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> isinstance(str,object)
    True
    la faut croire que oui ....
    c'est vraiment floue

    puis peut-on modifier les classes a la volée en python ?
    par exemple en ruby je veut ajouter Object#super comme Object#superclass,
    j'ai juste a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Object
        def super
            self.superclass
        end
    end
    c'est possible en python ?

  17. #37
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Par défaut
    Citation Envoyé par kedare Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> super(str) #pourquoi pas str.super ?
    <super: <class 'str'>, NULL>
    super ne retourne pas la classe parent. Mais crée une super classe/objet.
    super n'est pas une fonction mais un type prédéfini, il n'est pas utilisé pour répondre à la question "quelle est la classe parent de cette classe ?" mais est utilisée pour créer une super-class/objet, cette super classe/objet est utilisée après pour appeler les méthodes ancêtres et cacher ainsi toute la chaine d'héritage. Ceci est nécessaire dans certain cas car python gère l'héritage multiple de classes et super permet de résoudre le problème de l'appel coopératif à des méthodes de super classe.


    Pour des details sur ce probleme d'appel cooperatif voir ici:
    http://www.python.org/download/relea...o/#cooperation

    Citation Envoyé par kedare Voir le message
    #pourquoi pas str.super ?
    C'est str.__bases__

    Citation Envoyé par kedare Voir le message
    puis peut-on modifier les classes a la volée en python ?
    par exemple en ruby je veut ajouter Object#super comme Object#superclass,
    j'ai juste a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Object
        def super
            self.superclass
        end
    end
    c'est possible en python ?
    Oui, on peut en creer à la volé, les midifier et rajouter des classes de bases à une classe.
    Un peu comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    >>> class A:pass
    ...
    >>> class B:
    ...   def uneMethodDeChezB(self):
    ...     pass
    ...
    >>> class C:
    ...   def uneMethodDeChezC(self):
    ...     pass
    ...
    >>> A.__bases__ += (B,C)
    >>> A.uneMethodDeChezB
    <unbound method A.uneMethodDeChezB>
    >>> A.uneMethodDeChezC
    <unbound method A.uneMethodDeChezC>
    Dans python il y a la notion de type et de classe. A partir de la version 2.2 on a tenté d'unifier les deux notions, ce qui fait que maintenant un type est une classe mais une classe qui n'hérite pas explicitement de object n'est pas un type, néanmoins ca reste une class (type classobj) qui lui hérite bien de object.
    En claire tout est objets, et comme il est dis plus haut, ça sera encore plus renforcé dans les futurs versions.
    Ceci étant dis, tout ceci est du domaine du détail, et en pratique les quelques imperfections qui subsistes dans le model objet python ne réduisent en rien sa puissance, ni son champs d’utilisation.

  18. #38
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    mouais, je prefere quand meme ruby :p

  19. #39
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Citation Envoyé par kedare Voir le message
    mouais, je prefere quand meme ruby :p
    Ben correct.

  20. #40
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Citation Envoyé par kedare Voir le message
    parceque c'est plus utilisé , il y a plus de plugins :p
    Ca n'est pas un argument et ça n'en sera jamais un.
    C'est le même problème avec php, ou jquery, ce n'est pas la communauté qui fait le projet.

    Dans l'absolu, je trouve django moins contraignant, on est vraiment libre de faire à sa guise. Django est un framework qui propose des outils plutôt que des conventions.

    Y'a aussi un fossé considérable quand à la mise en place d'environnements de developpement. (en grande partie grace à WSGI)

    Il n'empeche que j'aime beaucoup Ruby, y'a pas mal de features interessantes, et c'est un langage très puissant.

    Ps : Et j'ajouterais que la majorité des remarques sur le langage de template sont invalides puisqu'on peut choisir le système de son choix (il en existe une douzaine il me semble)

Discussions similaires

  1. Passage des arguments par le shell
    Par panda31 dans le forum C
    Réponses: 8
    Dernier message: 09/11/2005, 11h53
  2. [Debutant ] Test des arguments du programme
    Par peaceinpal dans le forum C
    Réponses: 2
    Dernier message: 09/10/2005, 13h20
  3. taille max des arguments en ligne de commande
    Par clepape dans le forum Langage
    Réponses: 2
    Dernier message: 08/10/2005, 13h18
  4. Réponses: 2
    Dernier message: 15/02/2005, 14h18
  5. Réponses: 9
    Dernier message: 29/07/2003, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo