Je commence une nouvelle webapp en Python. J'ai réduit mes choix à Django et Pylons. Quels sont les avantages / inconvénients de chacun?
Réponses
Trop de publicités?Avertissement: j'ai créé des Pylônes.
Cela dépend vraiment du type d'application que vous êtes en train de construire. Les deux cadres ont été faites à l'origine pour résoudre les différents problèmes. En dépit de la façon dont beaucoup qu'ils ont tous deux viennent depuis leur création, il est toujours très utile de garder à l'esprit les problèmes qu'ils ont été créés pour résoudre parce que beaucoup de ces choix qui ont guidé le développement.
Django a été fait pour les sites des journaux, et pas seulement un seul journal (édition) du site, mais pour faire des sites entiers rapidement. Ils avaient généralement un personnel nécessaires pour commencer à pousser du contenu dans le système dès que possible, avant même la version publique du site qui pourrait être fait. C'est encore clairement reflétée dans Django car il a une très complète, conviviale interface d'administration pour le personnel pour commencer la saisie du contenu.
Au moment de Django a été faite, SQLAlchemy n'était pas autour, et SQLObject était une sorte de... défaut, de façon Django a son propre ORM. Il manque encore dans beaucoup de façons par rapport à SQLAlchemy, mais ça marchera tout simplement génial pour un grand nombre de besoins de la population.
Django a aussi le concept de "apps", qui sont simplement des répertoires à l'intérieur d'un projet Django qui ne une fonction spécifique pour le site. Cela reflète les créateurs originaux besoin de partager rapidement des composants d'un site avec d'autres sites qu'ils ont fait. Par exemple, ajouter rapidement des commentaires ou des critiques, à un autre site Django.
Alors que vous pouvez utiliser SQLAlchemy, ou un autre modèle de langues telles que le Mako, dans Django, beaucoup de Django forces (les "applications", vous pouvez ré-utiliser, l'interface d'admin, les pièces de la bibliothèque de formulaire) partent en fumée dès que vous utilisez SQLAlchemy au lieu de l'ORM de Django.
Tout comme le Django auteurs ont fait de Django à gratter leur démangent, j'ai fait des Pylônes à gratter de la mine.
Dans mon expérience, la création de sites est une très petite partie de leur durée de vie. J'ai fait passer beaucoup plus de temps à la maintenance d'une application web, ou d'ajouter des fonctionnalités à un existant. Donc la première chose que je voulais dans le cadre de a été des lieux communs de mettre les "bases" d'une application web, de sorte qu'il serait plus facile à maintenir, et que si d'autres gens savaient Pylônes ils ont un temps plus facile de sauter pour aider à maintenir un Pylônes app.
Tous les sites que j'ai construit, ils impliquent généralement très différents schémas de bases de données et des données de back-end, avec peu de choses en commun. Si le partage des "apps" comme Django ne n'est tout simplement pas une priorité, ni est-il possible compte tenu de la façon différente à chaque application sera en réalité (vous ne pouvez pas partager les pièces nécessitant un concept spécifique de la façon dont les utilisateurs sont traitées si différentes applications ont besoin pour gérer différemment).
J'ai aussi besoin de quelque chose de petit, qui n'était pas en train d'exécuter le spectacle pour moi. Je veux être en mesure de déterminer comment quelque chose va répondre sans en espérant que le cadre " laisse moi faire. Pour cette raison, un des Pylônes de l'app est un peu différent de la plupart des cadres, que le projet lui-même s'appuie l'application de l'objet, le rendant facile à obtenir dans et de modifier et de changer n'importe quel core bits en tant que de besoin.
Donc, la question, quelqu'un essaie de choisir que doit se poser, est ce que tentent-ils de construire? Parce que c'est vraiment la meilleure façon de déterminer le cadre approprié à utiliser pour la tâche.
Aussi, à l'heure actuelle, les Pylônes Livre est 100% à jour avec des Pylônes, alors que Django livre a été mis à jour pour la version 1.1 de Django.
Combien d'expérience avez-vous en Python? Si la réponse est "pas très", je dirais de commencer avec Django. Si vous êtes assez expérimenté en python, vous voudrez peut-être chercher dans les Pylônes. Ce n'est pas parce que les Pylônes est beaucoup plus difficile à apprendre que Django, tellement que c'est que les Pylônes des plus grand avantage réside dans sa facilité de personnalisation. Mais pour vraiment l'utiliser que des options de personnalisation, vous avez appris à connaître un peu plus sur ce logiciel python est là. (Ce n'est pas de dire que Django n'est pas personnalisable. C'est juste que les Pylônes semble être plus souple à cet égard).
La seule autre chose qui saute à l'esprit immédiatement est que Django génère automatiquement une section d'administration sur votre site pour vous, ce qui est VRAIMENT utile.
Django vs Pylons:
Django vs Pylons par Jordanovski
Pylons vs Django par pyDanny
Django vs. Pylons sur CarefulWeb
C'était un coup de gueule sur les Pylônes, ce qui (pour moi), de manière cohérente terminé dans la frustration. Maintenant, les Pylônes projet est un framework web appelé Pyramide. La pyramide est la meilleure chose depuis tranches de listes et c'est ce que j'ai fini de choisir au lieu de pré-Pyramide des Pylônes.
Avec les anciens Pylônes, j'ai couru contre un mur par le temps que j'ai investi suffisamment d'efforts dans le projet de envie de la sécurité. J'ai toujours couru contre subtile mais déchirante différences entre la documentation et le programme du comportement réel.
Dans la Pyramide, d'authentification et d'autorisation est intégré, et la documentation est esprit bogglingly étonnantes. Avec les équipements fournis, le reste du processus de développement, est allé beaucoup plus fluide que mon expérience avec de vieux-Bornes.
Je sais que django, mais après avoir lu les réponses à cette question, j'ai décidé d'essayer de pylônes pour un nouveau projet, et mon avis est maintenant
- Si pressé d'utiliser django.
- Si pas pressé utilisation de django.
- Dans le cas particulier où django ne suffit pas d'utiliser des pylônes.
Les pylônes est grand, mais il est plus simple d'approche intégrée, cet article résume très bien http://adam.gomaa.us/blog/2007/dec/16/frameworks-exist-for-conceptual-integrity/