web-dev-qa-db-fra.com

Django vs web2py pour un développeur débutant

Lequel de ces deux cadres convient mieux à un développeur avec 11 mois d'expérience. J'ai décidé d'apprendre python pour mon codage côté serveur et je voulais savoir lequel serait le mieux adapté pour quelqu'un à mon niveau de compétence. Je viens de passer quelques jours à jouer avec web2py et l'aime vraiment et je me demande si Django offre quelque chose de plus que je manque?

PS. MISE À JOUR: Merci à tous pour la merveilleuse contribution, après avoir acheté trois livres Django et après avoir parcouru quelques petits projets/tutoriels pour les deux Django et web2py, j'ai installé sur web2py. Ceci est un cadre merveilleux, ce qui rend le développement web vraiment amusant pour un nouveau. Je recommanderais à tous les débutants d'apprendre ce cadre car il sera courant à l'avenir. Django est également un cadre merveilleux mais web2py est juste meilleur à mon avis d'expérience limitée.

82
RubyGladiator

(avertissement: je suis le chef de projet pour web2py)

Django a été environ 5 ans plus long que web2py donc il a plus d'utilisateurs et plus d'applications à montrer. Django a ce qu'ils appellent "admin" qui n'est pas le même que "admin" de web2py mais plus comme "appadmin" de web2py. "Admin" de Django est meilleur et plus personnalisable que "appadmin" de web2py. Django n'a pas l'équivalent de "admin" de web2py (désolé pour la confusion de nom).

web2py est plus compact et offre plus de fonctionnalités prédéfinies (bases de données plus prises en charge, IDE basé sur le Web, système de billetterie, fonctionne sur GAE sans correctifs, plusieurs méthodes de connexion, contrôle d'accès basé sur les rôles, interface de traduction sur le Web, prise en charge de plusieurs connexions à la base de données, transactions distribuées, etc.).

Pour moi, la fonctionnalité la plus importante de web2py est la migration automatique. Django ne les fournit pas hors de la boîte.

Pour la compatibilité ascendante à long terme de web2py est un objectif principal, avec la sécurité. Django est comparable à web2py en termes de sécurité (sauf que web2py avait la prévention CSRF et l'échappement par défaut dans les modèles avant eux) mais Django a cassé la compatibilité descendante quand 1.0 Web2py n'a jamais été publié depuis octobre 2007.

Pour moi, la syntaxe web2py est plus naturelle:

 db(db.tablename.fieldname <= value).select() # web2py
 Tablename.objects.filter(fieldname__lt=value) # Django

Je ne connais aucune fonctionnalité de web2py qui n'est pas présente dans Django. J'ai posé cette question à plusieurs reprises car, s'il y en a, nous voulons l'ajouter à web2py, mais je n'ai pas encore reçu de réponse satisfaisante.

Bien sûr, il y a des choses que nous faisons tous les deux, mais différemment. Django suit "explicite vaut mieux qu'implicite". Web2py ne suit pas et à la place "tout devrait avoir un comportement par défaut". Je crois que cela rend le code et la configuration web2py plus compacts.

Quoi qu'il en soit, quoi que vous choisissiez, ce sont deux bons cadres Web solides et il y a moins de similitudes que de différences. Les développeurs de Django sont des gens très intelligents.

La communauté web2py est très sympathique. À titre expérimental, essayez de poser une question sur le groupe google web2py et sur le groupe Django.

106
mdipierro

Les deux Django et web2py sont d'excellents frameworks web "full stack" avec des fonctionnalités et des capacités similaires - vous ne manquerez pas à peu près comme un débutant avec l'un ou l'autre framework.

Il est difficile de répondre à votre question sans en savoir plus sur ce que vous voulez faire de votre apprentissage. Certains diraient qu'il existe un danger d'apprendre le framework et non le langage, il serait donc préférable de mieux comprendre le langage Python et les frameworks plus légers (par exemple Flask ou wekzeug ) en premier.

Cela dit, web2py a une courbe d'apprentissage initiale inférieure à Django tel qu'il était spécialement conçu comme un outil d'apprentissage . Donc je dirais que vous avez fait un bon Aucun apprentissage n'est jamais gaspillé et si vous décidez que vous avez besoin d'autre chose à l'avenir, les bonnes techniques que vous aurez apprises en utilisant web2py ne seront pas perdues.

Bien qu'il existe plus de ressources d'apprentissage pour Django, car il existe depuis plus longtemps et compte plus d'utilisateurs, l'apprentissage de web2py est également rapide en raison de l'excellente livre et des réponses presque instantanées aux questions sur tilisateur groupe .

Si vous cherchez à obtenir un emploi, il y a plus Django emplois donc cela pourrait être un facteur. Cela dit, la communauté web2py a récemment mis en place experts4solutions où vous pourriez promouvoir vos compétences et votre disponibilité à l'avenir.

S'amuser!

23
keybits

Je suis un noob complet avec Web2py et Django, mais je voulais un framework web qui était en Pythonic pour jouer, apprendre et créer un frontal pour une base de données simple. J'ai regardé web2py mais je n'ai trouvé aucun tutoriel décent, destiné aux débutants complets, quand j'ai installé web2py, ce qui était très facile, je ne savais pas quoi faire ensuite, il ne semblait y avoir aucun tutoriel qui m'a guidé comment construire une application web simple, (pas seulement bonjour le monde). D'autre part Django did Écriture de votre premier Django App Part 1 . Cela a été vraiment bien, donnant une introduction à un débutant) sur la façon de configurer et d'utiliser le framework en écrivant une application web simple. Jusqu'à ce que Web2Py le propose, mon vote va à Django.

10
user595985

En plusieurs mots: (si j'ai bien compris)

Web2py est nettement plus facile et rend le code plus simple et plus propre. Mais Django vous donne une meilleure compréhension de ce qui se passe, et aussi plus de pouvoir pour modifier la conception/le processus.

Web2py met davantage l'accent sur "simple vaut mieux que complexe", mais Django met davantage l'accent sur "explicite vaut mieux qu'implicite". Deux parties de The Zen of Python, donc c'est très difficile à dire quel cadre est plus Pythonic.

6
saeedgnu