60 votes

Django vs d'autres frameworks web Python?

J'ai à peu près essayé tous les framework web Python qui existe, et il m'a fallu du temps pour réaliser qu'il y avait pas une solution miracle, cadre, chacun a ses propres avantages et inconvénients. J'ai commencé avec Snakelets et vivement apprécié d'être en mesure de contrôler presque tout à un niveau inférieur, sans beaucoup de bruit, mais ensuite j'ai découvert TurboGears et j'ai été en utilisant (1.x) depuis. Des outils comme Passerelle et la console web sont d'une valeur inestimable pour moi.

Mais avec TurboGears 2 sortant qui apporte WSGI de soutien, et après avoir lu sur les débats religieux entre Django et WSGI camps, je suis vraiment déchiré entre "faire le bien", par exemple, l'apprentissage de WSGI, un temps précieux avec des fonctions d'écriture qui existe déjà dans Django et autres full-stack cadres, par opposition à l'utilisation de Django ou de haut-niveau cadre qui fait tout pour moi. Les inconvénients avec la dernière que je peux voir sont assez évidentes:

  1. Je ne suis pas apprendre quoi que ce soit dans le processus de
  2. Si jamais j'ai besoin de faire quelque chose de plus bas niveau ça va être une douleur
  3. Les frais généraux nécessaires pour juste un site de base qui utilise l'authentification est fou. (OMI)

Donc, je suppose que ma question est, quel est le meilleur choix, ou est-ce juste une question d'opinion, et je doit le sucer et l'utilisation de Django si il réalise ce que je veux avec un minimum de tracas (je veux authentification et une interface CRUD à ma base de données)? J'ai essayé Werkzeug, Glashammer, et les amis, mais AuthKit et Repoze peur de me, ainsi que le nombre d'étapes à juste configuration de l'authentification de base. J'ai regardé les Pylônes, mais la documentation semble en manque, et lors de la référence à des fonctionnalités simples comme l'authentification ou une interface CRUD, les différentes pages du wiki et de la documentation semble contredire les uns les autres, avec différents hacks pour les versions et.


Grâce à S. Lott pour préciser que je n'étais pas assez claire. Ma question est: lequel des énoncés suivants est utile dans le long terme, mais pas douloureux dans le court (par exemple, une sorte de juste milieu, quelqu'un?) - Apprendre WSGI, ou un bâton avec un "batteries-inclus" cadre? Dans ce dernier cas, je vous serais reconnaissant une suggestion de savoir si je devais donner Django, essayez un autre, bâton avec TurboGears 1.x, ou aventurez-vous dans un autre cadre.

J'ai également essayé de CherryPy, mais n'arrivais pas à trouver un assez bon CRUD application que j'ai pu plop et de l'utiliser tout de suite.

54voto

Jason Baker Points 56682

les débats religieux entre Django et WSGI camps

Il semble comme si vous êtes un peu confus au sujet de ce WSGI est et ce qu'il est. Dire que Django et WSGI sont en concurrence est un peu comme dire que C et SQL sont en concurrence: vous êtes à comparer des pommes et des oranges.

Django est un framework, WSGI est un protocole (qui est pris en charge par Django) la façon dont le serveur interagit avec le cadre. Plus important encore, apprendre à utiliser WSGI directement est un peu comme l'apprentissage de l'assemblée. C'est une excellente expérience d'apprentissage, mais ce n'est pas vraiment quelque chose que vous devriez faire pour la production de code (il n'a pas été prévu pour être).

En tout cas, mon conseil est de figure it out pour vous-même. La plupart des cadres ont une "faire un wiki/blog/sondage en une heure" type d'exercice. Passer un peu de temps avec chacun et de déterminer ce qui vous convient le mieux. Après tout, comment pouvez-vous décider entre les différents cadres si vous n'êtes pas prêt à essayer?

21voto

Nicholas Riley Points 26161

Je dirais que vous êtes un peu trop pessimiste à propos de "pas apprendre quoi que ce soit" à l'aide de Django ou un similaire framework full-stack, et sous-estimer la valeur de la documentation et une grande communauté. Même avec Django, il y a toujours une courbe d'apprentissage considérable; et si ce n'est pas faire tout ce que vous voulez, ce n'est pas comme le code de la structure est impénétrable.

Une expérience personnelle: j'ai passé des années, sur et en dehors, de déconner avec le Tordu/Nevow, TurboGears et quelques autres Python frameworks web. Je n'ai jamais terminé rien car le code de la structure est perpétuellement inachevé et d'être réécrit en dessous de moi, la documentation est souvent inexistant ou mal et la seule solution viable était le support via IRC (où j'ai souvent eu de bons conseils, mais me sentais comme imposant si je pose trop de questions).

Par comparaison, au cours des deux dernières années, j'ai cassé quelques sites avec Django. Contrairement à mon expérience précédente, ils sont effectivement déployées et en cours d'exécution. Le Django processus de développement peut être lent et prudents, mais il en résulte beaucoup moins bitrot et de la dépréciation et de la documentation qui est en fait utile.

Support de l'authentification HTTP pour Django finalement allé dans un il ya quelques semaines, si c'est ce que vous faites allusion à l'en #3.

11voto

Mark Ramm Points 111

Votre question semble être: "est-il la peine d'apprendre WSGI et de tout faire vous-même," ou à l'aide d'un "framework full stack, qui fait tout pour vous."

Je dirais que c'est une fausse dichotomie, il y a un évident troisième voie. TurboGears 2 essaie de fournir un chemin lisse à partir d'un "tout faire pour vous" style de cadre à la compréhension de WSGI middleware, et une possibilité de personnaliser presque tous les aspects du cadre pour répondre aux besoins de votre application.

On peut ne pas être couronnée de succès dans tous les lieux, à tous les niveaux, mais en particulier si vous avez déjà certaines TurboGears 1 de l'expérience, je pense que le TG2 courbe d'apprentissage sera très, très facile au premier abord et vous aurez la possibilité d'aller plus loin exactement quand vous en avez besoin.

Pour répondre à vos questions en particulier:

  • Nous fournissons un système d'autorisation hors de la zone qui correspond à celui que vous avez l'habitude de partir TG1.
  • Nous fournissons un hors de la zone de "django admin" comme interface appelée la tgext.admin, qui fonctionne très bien avec dojo pour faire une fantaisie feuille de calcul comme interface par défaut.

Je tiens également à adresser un couple d'autres options qui sont là-bas et parler un peu des avantages.

  • CherryPy. Je pense que CherryPy est un grand serveur web et une belle minimaliste web-cadre. Elle n'est pas basée sur WSGI en interne, mais a de bonnes WSGI soutien bien qu'il ne sera pas vous fournir le "full stack" de l'expérience. Mais pour les configurations personnalisées qui doivent être à la fois rapide et ne sont pas particulièrement adaptés pour les valeurs par défaut fournies par Django ou TurboGears, c'est une excellente solution.

  • Django. Je pense que Django est un très bel, tigtly système intégré pour le développement de sites web. Si votre application et de votre style de travail correspond bien à l'intérieur de son installation standard, il peut être fantastique. Si, toutefois, vous devez ajuster votre DB d'utilisation, de remplacer le modèle de la langue, l'utilisation d'un autre utilisateur modèle d'autorisation ou sinon faire les choses différemment, vous pouvez très probablement vous retrouver lutte contre le cadre.

  • Les pylônes Pylônes comme CherryPy est un grand minimaliste web-cadre. Contrairement à CherryPy c'est WSGI activé par le biais de l'ensemble du système et fournit quelques options par défaut comme SQLAlchemy et Mako qui peuvent vous aider à bien s'adapter. La nouvelle officielle docs sont de bien meilleure qualité que l'ancien wiki docs qui sont ce à quoi vous semblez avoir regardé.

7voto

Martin Points 3187

Avez-vous jeté un coup d'œil à CherryPy? C'est minimaliste, mais efficace et simple. Il est assez bas pour ne pas le faire entrer, mais assez haut pour cacher la complexité. Si je me souviens bien, TurboGears a été construit dessus.

Avec CherryPy, vous avez le choix de presque tout. (Template framework, ORM si désiré, back-end, etc.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X