27 votes

Django vs Flask + Werkzeug pour des applications complexes, évolutives et volumineuses

Je suis sur le point de me salir les mains sur la construction d'une demande pour un, de la société de négoce entièrement sur python. J'ai expérimenté avec django et flacon. Voici quelques-unes des choses que je suis venu.

  • Django est bien trop facile de développer une application, mais j'ai l'impression que l'ORM est la limitation de moi, de plusieurs façons.
  • J'ai été très impressionné par flacon et comment nous pouvons les combiner avec Jinja, SQLAlchemy et Tordu, mais il manque beaucoup de documentation et de soutien comme Django a (Sérieusement documentation de Django est totalement génial).

Donc je suis un peu confus ce que je vais faire. Dois-je aller avec Django ou Flacon + Werzeug?

33voto

jd. Points 4600

J'ai utilisé Werkzeug avec Jinja et SQLAlchemy pour deux ans et ne peut que recommander ces trois bibliothèques. Werkzeug peut-être un peu plus difficile à apprendre que Django au début, mais les docs sont en fait complète et bien écrite. Inclus débogueur est extrêmement utile.

À la différence de l'ORM de Django, SQLAlchemy de ne pas obtenir de votre manière. Les programmes de génération SQL a très peu de limites, avec ou sans l'ORM, et dans les très rares cas où vous en avez besoin, SQL brut est disponible sans abandonnant les avantages de la enveloppé les résultats de la requête, la gestion des transactions, le regroupement de connexions, etc.

Comme pour Jinja, il est très similaire à Django modèle de langue, seulement sans les limitations (vous n'aurez pas à écrire les balises du modèle).

Je n'ai pas eu la chance d'essayer le Flacon encore, mais c'est probablement la meilleure façon de commencer un nouveau projet basé sur Werkzeug et Jinja.

Edit: depuis que j'ai écrit cette réponse, j'ai utilisé presque exclusivement Flacon et en effet c'est un très beau cadre, en particulier lorsqu'il est couplé avec SQLAlchemy.

6voto

andreypopp Points 2326

Je ne pense pas que Django documenté mieux que le Flacon, en raison de ce dernier est microframework, pas un framework full stack - Jinja2 et SQLAlchemy ont documenté séparément et ses docs sont très bien écrit et complet.

Concernant l'utilisation de l'ORM dans des projets complexes, je peux dire que tout ORM est de limiter la fonctionnalité de base de données spécifique, mais SQLAlchemy est vraiment un grand morceau de logiciel très flexible et puissant. Je vous conseille de commencer à utiliser SQLAlchemy et voir comment il va, à tout moment, vous pouvez mettre à l'échelle en bas à raw SQL si nécessaire.

Aussi, je peux vous suggérer de regarder la Pyramide web-framework - il est aussi bien documenté et puissant.

3voto

Jacob Oscarson Points 4275

Le cœur de cette question n'est pas vraiment technique, mais plutôt votre objectif avec ce projet. Si c'est un projet qui a un élément de développement de vos compétences, vous devez choisir l'option que vous ne connaissez pas (Flacon, etc. dans votre cas).

Si d'un autre côté vous avez besoin de résultats rapides et fiables et que c'est un peu un projet `` écrire et oublier '', vous êtes probablement mieux avec l'option que vous connaissez déjà le mieux (Django dans votre cas).

1voto

Spacedman Points 33792

Si l'ORM limites que vous ne l'utilisez pas. Écrivez votre propre couche de base de données (utilisation d'un NoSQL db, si vous voulez) et de garder de django reinhardt, le mappage d'URL, de gabarits, de la gestion des formulaires, et la vue de l'architecture. Ou d'utiliser certains des ORM pour des choses qui en ont besoin et pas pour ceux qui ne l'est pas.

Flacon+werkzeug ne vais pas vous donner une couche de base de données de sorte que vous devrez en obtenir un, comme SQLAlchemy comme vous le mentionnez, mais combien de temps avant de vous lancer dans les limites de l'ORM?

Si vous pensez que SQLAlchemy n'est pas le respect de ces limites, vous pouvez l'utiliser avec Django.

http://lethain.com/entry/2008/jul/23/replacing-django-s-orm-with-sqlalchemy/

0voto

zatta Points 480

Django puissance brille par la notion de rapide développement de l'application où vous pouvez trouver nombre énorme de "full-stack" extensions. L'obtention d'un passe-partout pour Flacon aura le même effet, mais vous ne trouverez pas de flacon spécifique des applications beaucoup, au lieu de cela, vous serez en mesure de mettre à niveau les composants facilement.

Je suis un développeur Django pour 5 ans, mais maintenant dirigés pour un marché de projet et c'est la seule chose que je souhaite développer. Je vais passer à Gourde en moins d'un an. Je pourrais casser Django en pièces, mais qui briserait les demandes en cours, qui est également lié à la version de Django. Oui, je pourrais l'utiliser bien entretenu bibliothèques avec Django, mais qui ne serait pas attraper notre 'délais'. La mise à niveau de version de Django avec un nouveau départ est également une option, mais je ne veux pas le faire à l'échelle des migrations de chaque année.

Pas de regrets à l'aide de Django jusqu'à ce point, il vous force à apprendre les meilleures pratiques, et vous aide à obtenir le financement. Je l'appelle un démarrage cadre qu'il vous aide à changer votre logique métier rapidement. Si vous êtes un démarreur, aller avec Django, le passage à la Fiole dans le futur ne sera pas douloureux une fois que vous en avez besoin.

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