web-dev-qa-db-fra.com

Qu'est-ce qu'un bon framework léger Python MVC?

Je sais qu'il y a une tonne de frameworks Python là-bas. Pouvez-vous me diriger dans la bonne direction? Ma principale préoccupation est la simplicité, je n'ai pas besoin de beaucoup de fonctionnalités étrangères. Voici quelques autres choses que je voudrais (ou ne veux pas):

  • ne se soucient pas d'ORM, veulent juste qu'il fonctionne avec MySQL
  • a des itinéraires configurables
  • prend en charge les mises en page
71
jon

web2py représente 265 Ko de code source et 1,2 Mo tout compris (à comparer avec 4,6 Mo de Django). Pourtant, web2py fera tout ce dont vous avez besoin (gestion de session, cookies, demande, réponse, cache, internationalisation, erreurs/tickets, abstraction de base de données pour GAE, SQLite, MSSQL, MySQL, Postgres, Oracle, FireBird, etc.) Il n'a pas besoin d'installation - décompressez et cliquez dessus - et vous pouvez faire du développement dans votre navigateur.

Web2py a à la fois des itinéraires et des itinéraires inverses.

Web2py dispose d'un système de modèles hiérarchiques, ce qui signifie qu'une vue peut étendre une disposition qui peut étendre une autre disposition, etc. les vues peuvent également inclure d'autres vues.

44
massimo

Puisque vous ne voulez explicitement pas d'ORM, je resterais loin d'un framework "full stack" si j'étais vous. La norme WSGI de Python vous offre une tonne d'options faciles à utiliser qui vous donneront uniquement les fonctionnalités dont vous avez besoin et vous permettront même de choisir votre style de travail.

Voici un exemple: pour l'envoi d'URL, vous pouvez utiliser Routes , qui transfère le style d'envoi d'URL de Rails. Ou vous pouvez combiner Sélecteur avec WebOb si ce style vous convient davantage.

Pour les "mises en page", vous pouvez utiliser le puissant Jinja2 si vous voulez des modèles qui ne peuvent pas exécuter de code. Ou, Mako si vous préférez pouvoir mélanger un peu de code avec vos modèles. Vous pouvez même utiliser Deliverance pour contrôler la mise en page des pages composées de plusieurs applications et même de plusieurs langues!

Un framework web full-stack est agréable en ce sens qu'il fait un tas de choix pour vous, vous permettant de prêter attention uniquement à l'application de votre bâtiment. Mais, les choix que j'ai énumérés ci-dessus sont une bonne collection pour vous aider à construire votre propre. Si vous empruntez ce chemin, vous trouverez facile de brancher Beaker pour la mise en cache et les sessions si vous en avez besoin, ou WebError pour vous aider avec le débogage.

Personnellement, je suis un grand fan des ORM (en particulier SQLAlchemy ), mais si vous cherchez à devenir sans ORM et léger, vous ne pouvez pas battre la combinaison des excellents composants WSGI disponibles en Python.

31
Kevin Dangoor

Essayez web.py . C'est très simple et peut fournir le minimalisme que vous recherchez.

11
Dimitry Z

Pylônes.

C'est beaucoup mieux que Django, et ne vient pas avec un ORM merdique.

9
habnabit

Les gens ont déjà donné de nombreuses réponses concernant les cadres d'applications Web, mais MVC (ou tout autre paradigme) n'est pas uniquement lié au Web. C'est juste pour plus de clarté.

Si vous êtes sur MVC simple, Pylons se conforme au paradigme d'une manière plus stricte. Django interprète MVC et ils l'appellent model-template-view , mais l'idée de séparation des rôles est la même. Le choix réel est une question de goût personnel, bien que je ne considère aucun des deux poids léger (les pylônes peuvent sembler plus légers , mais en fait ne l'est pas, et récemment Django a rassemblé un peu de poids supplémentaire - très probablement vous ne rentrerez pas même dans une petite application comme un blog personnel dans une mémoire résidente de 20 Mo).

Bien sûr, rien ne vous empêchera d'écrire votre propre framework, par exemple. avec WebOb . Vous pouvez le faire aussi léger que vous le souhaitez (et apprendre beaucoup de choses en essayant).

8
zgoda

caisse https://github.com/salimane/bottle-mvc ou https://github.com/salimane/flask-mvc . Ce sont des passe-partout qui pourraient vous aider à démarrer avec des contrôleurs, des modèles dans des dossiers séparés. Ils sont basés sur la bouteille et les micro-cadres flask, pas de fonctionnalités inutiles, ils vous donnent la flexibilité de brancher les modules que vous voulez.

Si vous voulez quelque chose de simple, sans avoir à faire votre propre framework , tout en n'étant pas tout inclus (Django), vous voudrez peut-être essayer CherryPy . Il peut utiliser presque n'importe quel répartiteur (gestionnaire de page/système de routage d'URL). Vous devrez également choisir votre propre moteur de modélisation, Genshi est mon préféré.

6
alif

En ce qui concerne les applications de bureau Dabo est un bon choix. Il s'agit d'un framework multiplateforme au-dessus de wxPython qui prend en charge MySql, Postgresql, Firebird et Sqlite.

6
uwe

Vous voulez web2py. Vérifie ça:

  • ne se soucient pas d'ORM, veulent juste qu'il fonctionne avec MySQL

Web2py n'a pas d'ORM, mais il a un wrapper syntaxique sur SQL qui facilite beaucoup le SQL.

  • a des itinéraires configurables
  • prend en charge les mises en page

... web2py a les deux.

Et web2py est plus léger que Django/Rails/peu importe à peu près tous les points. C'est TRÈS facile à apprendre. Les choses les plus difficiles à apprendre sur un framework MVC sont les scripts, l'ORM et (avec Django) le langage de template. Mais web2py s'est débarrassé des scripts, a simplifié l'ORM et le langage du modèle est juste python d'une manière très intelligente).

5
toomim

Django!

Google App Engine l'utilise.

Je l'utilise aussi pour mes propres projets d'animaux.

4
Graviton

Oui, je dirais que Django est définitivement la voie à suivre. Sa conception modulaire garantit que vous pouvez mélanger et assortir les composants (ORM, moteur de modèle, envoi d'URL, ...) Au lieu d'être coincé avec un composant que le framework vous fournit, vous pouvez le remplacer par n'importe quel équivalent tiers à la place.

4
Gabriel Ross

web2py! Django appelle un contrôleur une vue ", a expliqué nuf.

3
why

Si vous voulez de la simplicité, utilisez web2py ou des pylônes. Django est bon ... mais la courbe d'apprentissage est raide

3
BasicGuy

Django. Vous n'avez pas avez pour utiliser les fonctionnalités supplémentaires, et il est bien conçu pour que vous puissiez mélanger des bibliothèques tierces en fonction des besoins.

2
John Millikin

Je voudrais jeter un oeil à Pylônes ; il est léger et rapide.

2
tholo

Je suis aussi sur le Django bateau. Voici quelques raisons pour lesquelles:

2
Ross

Je suis vraiment nouveau sur Python mais j'en ai essayé quelques-uns, spécialement Django et web2py. J'ai adoré la simplicité de web2py, j'ai pu créer un site de complexité moyenne en quelques jours. Il a un ensemble de fonctionnalités nécessaires: DAL, génération de code, hlpers HTML et pour moi la caractéristique la plus importante était que la documentation du site est assez complète.

2
user10917

Django est ma recommandation.

Vous pouvez trouver un introduction ici (un Google Tech Talk par Jacob Kaplan-Moss):

Et vous voudrez peut-être aussi jeter un œil à conférence d'Adrian Holovaty donnée à Snakes and Rubies , DePaul University:

0
Nolan Evans