Maison > Article > développement back-end > Une discussion détaillée des cinq frameworks Web Python couramment utilisés
Il y a tellement de frameworks en Python, et peu de gens peuvent tous les jouer, franchement, je n'en ai utilisé que trois pour développer des projets, et j'ai un peu de contacts avec d'autres, donc je ne peux en parler que brièvement. ici. Bienvenue pour en savoir plus. Amis ajoutés
En parlant de Web Framework, le monde Ruby est dominé par Rails, tandis que Python est un monde où s'épanouissent une centaine de fleurs, avec d'innombrables micro-frameworks et frameworks pour un aspect incomplet. liste, voir :
wiki.python.org/moin/WebFrameworks
Bien qu'un autre langage de script majeur, PHP, possède également de nombreux frameworks, ils sont beaucoup moins exagérés que Python C'est précisément parce que. du Python Web Framework (Python Web Development Framework, Il y a trop de frameworks Python (ci-après dénommés frameworks Python), il y a donc toujours des sujets sur lesquels le framework Python est meilleur et pire dans la communauté Python, et la discussion s'étend même sur jusqu'à 3-5 ans.
Il y a tellement de frameworks en Python, et peu de gens peuvent tous les jouer, franchement, je n'en ai utilisé que trois pour développer des projets, et j'ai un peu de contact avec les autres, donc je ne peux que parler. à ce sujet brièvement ici, les amis bien informés sont invités à ajouter.
Bien que l'on dit que le framework Python est florissant, il y en a encore un qui est le plus gros. C'est Django. Dire que Django est le meilleur parmi les frameworks Python, certaines personnes sont d'accord et d'autres fermement en désaccord. Cependant, si Django a la documentation la plus complète, la part de marché la plus élevée et le plus grand nombre d'offres d'emploi, je suppose que tout le monde n'a pas d'objection. Les principales choses pour lesquelles Django est loué incluent :
Une documentation parfaite Je pense qu'une grande partie du succès de Django est due à la documentation officielle presque parfaite de Django (y compris le livre de Django).
Un ensemble complet de solutions, Django, comme Rails, fournit un ensemble complet de solutions (framework full-stack + batteries incluses), en gros tout ce dont vous avez besoin est disponible (par exemple : cache , session, feed, orm, geo, auth), et tous sont créés par Django lui-même. Django a essentiellement préparé tous les outils de développement de sites Web pour vous, donc l'efficacité du développement est inutile de le dire, et cela. Il est facile de trouver des problèmes s'ils surviennent, non pas dans votre code mais dans le code source de Django. Configuration de
URLRoutage puissante, Django vous permet de concevoir des URL très élégantes. Dans Django, vous pouvez essentiellement dire adieu aux paramètres GET laids.
Backend de gestion en libre-service, l'interface d'administration est l'une des contributions les plus accrocheuses de Django, vous permettant d'avoir une interface de gestion backend complète sans écrire une seule ligne de code.
Le système est étroitement couplé. Si vous estimez qu'une certaine fonction intégrée à Django n'est pas très bonne, il sera difficile de la remplacer par votre bibliothèque tierce préférée, comme l'ORM et le Template mentionnés ci-dessous. . Il est presque impossible d'utiliser SQLAlchemy ou Mako dans Django, et même avec quelques correctifs, cela vous mettra très, très mal à l'aise.
La fonction Template est relativement faible et ne peut pas insérer de code Python. Pour écrire une logique plus complexe, vous devez utiliser Python pour implémenter Tag ou Filter. Il y a eu beaucoup de débats sur les modèles. Récemment, il y a deux articles intéressants sur les modèles Python pour référence :
1 pydanny.blogspot.com/2010/12/stupid-template-langages html (nécessite FQ. )
2 techspot.zzzeek.org/2010/12/04/in-response-to-stupid-template-langues/
Bien que la configuration de l'URL soit puissante, tout doit être écrit à la main . Ceci est complètement incompatible avec le concept de convention sur la configuration de Rails. Les URL attribuées par les experts et ceux qui sont nouveaux dans Django seront très différentes.
Le schéma de la base de données a été défini pour vous, des problèmes surviennent donc. Par exemple, de nombreux sites Web exigent que l'adresse e-mail soit unique, mais la valeur de ce champ dans le schéma n'est pas unique. , il faut donc lutter.
En général, Django a beaucoup à offrir, et il est très bien de l'utiliser pour développer rapidement certaines applications web. Si vous suivez la philosophie de conception de Django, vous trouverez Django facile à utiliser et plus vous l'utiliserez, plus cela deviendra facile. Au contraire, si vous ne pouvez pas intégrer ou accepter la philosophie de conception de Django, il vous sera certainement pénible de l'utiliser. Django, il vaut donc mieux abandonner le plus tôt possible. Ainsi, aux yeux de certaines personnes, Django n’est pas différent d’un élixir, mais pour d’autres, c’est un poison hautement toxique.
Pylônes & TurboGears & repoze.bfg
En plus de Django, l'autre grand projet est Pylons, car TurboGears2.x est basé sur Pylons, et repoze.bfg a également été incorporé dans ce grand projet dans le projet Pylons, qui ne sera pas discuté séparément plus tard. TurboGears et repoze.bfg.
Les concepts de conception de Pylons et de Django sont complètement différents. Pylons lui-même ne contient qu'environ deux mille lignes de code Python, mais il est également livré avec des modules tiers qui sont presque utilisés par Pylons. Pylons ne fournit qu'une seule étagère et des solutions facultatives. Vous pouvez choisir librement des composants tels que le modèle, l'ORM, le formulaire et l'authentification selon vos propres préférences. Nous disons souvent que Python est un langage de colle, nous pouvons donc certainement dire que Pylons est un framework de colle conçu avec un langage de colle.
Choisir Pylons, c'est probablement choisir sa liberté. Choisir la liberté, c'est aussi choisir le cauchemar :
Le cauchemar de l'apprentissage, Pylons s'appuie sur de nombreuses bibliothèques tierces, qui ne sont pas des Pylons. Lorsque vous apprenez Pylons, vous Vous devez également apprendre à utiliser ces bibliothèques. La clé est que parfois vous ne savez pas ce que vous voulez apprendre. La courbe d'apprentissage de Pylons est beaucoup plus élevée que celle de Django, et la documentation officielle de Pylons a déjà fait l'objet de critiques. Heureusement, le livre The Definitive Guide to Pylons a été publié plus tard. Cette situation a changé. Pour cette raison, Pylons était autrefois connu comme un framework Python réservé aux experts.
DébogageUn cauchemar, car de nombreux modules sont impliqués, et une fois qu'une erreur se produit, il est difficile de localiser le problème. Cela peut être la faute du programme que vous avez écrit, ou il se peut que Pylons ait tort, ou que SQLAlchemy ait tort, ou peut-être qu'il y ait un bug dans le formencode, c'est très compliqué de toute façon. Ce problème ne peut être résolu que si vous le connaissez. L'intégration de Pylons et repoze.bfg pourrait donner naissance au prochain framework qui pourra remettre en question le statut de Django.
Tornado& web.py
Tornado est un serveur Web ( Cet article ne développera pas cela), et c'est aussi un micro-framework similaire à web.py En tant que framework, l'idée de Tornado vient principalement de Web.py. Vous pouvez également voir le patron de Tornado sur le. page d'accueil du site Web.py. Bret Taylor a dit ceci (le framework qu'il a mentionné ici pour FriendFeed peut être considéré comme la même chose que Tornado) :
« [web.py a inspiré le] framework Web que nous utilisons chez FriendFeed. [et] le framework d'application Web fourni avec App Engine… »
En raison de cette relation, Tornado ne sera pas abordé séparément plus tard.
L'avantage de rationaliser un framework est que vous pouvez vous concentrer sur la logique métier sans avoir à trop vous soucier du framework lui-même ou à être interféré par le framework. En même temps, les inconvénients sont également évidents. devez faire beaucoup de choses vous-même.
Personnellement, je préfère ce type de framework simplifié, car vous pouvez facilement comprendre le mécanisme de fonctionnement de l'ensemble du framework en lisant le code source. Si cette partie du framework n'est pas très satisfaisante, je peux complètement la patcher avec Monkey. selon mes propres exigences.
Bottle& Flask En tant que représentant de la nouvelle génération de frameworks Python, Flask est très intéressant dans le sens où il utilise le méthode decorator pour configurer le routage d'URL, telle que : Bottle, Flask, comme web.py, sont très simplifiés, Bottle et même tout Le code est tout dans ce fichier .py avec environ 2 000 lignes. De plus, Flask, comme Pylons, peut être bien combiné avec Jinja2, SQLAlchemy, etc.
Cependant, il existe encore très peu de cas réussis de bouteille ou de flacon.
Quichotte
from bottle import route, run @route('/:name') def index(name='World'): return '<b>Hello %s!</b>' % name run(host='localhost', port=8080)
La raison pour laquelle je veux parler de Quichotte en particulier est que le plus grand site Web national développé en Python, "Douban.com", a été développé en utilisant Quichotte . J'ai juste parcouru brièvement le code source, je n'ai fait aucune recherche et je n'en ajouterai pas davantage si j'ai de l'expérience. Je pense juste que si Douban était développé maintenant, il y aurait plus de choix.
Autres(web2py, uliweb, Karrigell, Werkzeug...)
Dernier malentendu sur la sélection du frameworkDans le framework Lorsqu'il s'agit de choisir, beaucoup de gens tombent facilement dans les deux malentendus suivants sans le savoir : 1. Quel framework est le meilleur - il n'y a pas de meilleur framework au monde, seulement le plus approprié et le plus adapté pour vous Un cadre pour votre équipe.
Langage de programmationLe choix est également le même. Si votre équipe est plus familiarisée avec Python, utilisez Python. Si vous êtes plus familier avec Ruby, utilisez Ruby. Les langages et frameworks de programmation ne sont que des outils. peut être utilisé plus rapidement, bon et économique, c'est une bonne chose une fois le travail terminé. 2. Accordez trop d'attention aux performances - En fait, la plupart des gens n'ont pas besoin de trop se soucier des performances du framework, car le site Web que vous développez est simplement un petit site Web. Il n'y a pas beaucoup de sites Web qui le peuvent. prennent en charge 10 000 IP, et 10 000 sont encore plus rares. Cela n'a pas beaucoup de sens de parler de performances sans un certain nombre de visites, car votre CPU et votre mémoire sont toujours inactifs. De plus, les langages et les frameworks ne constituent généralement pas des goulots d'étranglement en termes de performances. Les problèmes de performances surviennent le plus souvent au niveau de l'accès aux bases de données et de la lecture et de l'écriture des fichiers. Le Zend Framework de PHP est notoirement lent, mais Zend Framework possède également de gros sites Web, tels que digg.com ; Ruby et Rails, dont on dit souvent qu'ils ont des problèmes de performances, ne peuvent-ils pas encore développer Twitter ? De plus, le coût actuel du matériel et de la bande passante est en réalité très faible, surtout avec l'avènement des plates-formes de cloud computing, les coûts de main-d'œuvre sont les plus élevés si vous n'avez pas des dizaines de milliers d'adresses IP, vous n'avez pas non plus à vous inquiéter. beaucoup de choses sur les problèmes de performances. Si le trafic augmente, dépensez de l'argent pour en acheter. L'espace serveur est bon et le problème de performances peut être résolu simplement et rapidement. Remarque : Certains internautes ont remis en question ma déclaration selon laquelle "Quora a été développé à l'aide de Pylons" n'est pas objective. Laissez-moi vous expliquer que le site Web A mentionné ici est développé en utilisant B, ce qui signifie seulement que A en est principalement ou une partie. a été développé par B, alors ne vous inquiétez pas de savoir si A utilise C. 【Recommandations associées】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!