Question Pyramid: Equivalent de MVC dans les Frameworks PHP dans Pyramid / Python?


Quels sont les équivalents Pyramid / Python de Model-View - Controller of PHP Frameworks tels que Kohana?

In Pyramid "Model" is .... and it is used for .....
In Pyramid "View" is .... and it is used for .....
In Pyramid "Controller" is .... and it is used for .....

J'essaie de comprendre la logique de Pyramid. En complément à la réponse, toute aide, documentation, etc. serait appréciée.

Merci.


11
2018-02-17 19:29


origine


Réponses:


Pylons, l’un des deux frameworks réunis sous le nom de Pyramid (l’autre était repoze.bfg), était "proche" d’un système MVC.

J'ai mis des citations serrées, parce que ces dernières années, beaucoup de gens se sont battus pour savoir ce que signifie MVC ... et de nombreux projets qui se vantaient autrefois comme "MVC" ont commencé à les appeler "MTC" MT "(modèle de modèle) ou" MV "(vue du modèle). Tout le monde est d'accord sur ce qu'est le "modèle", mais exactement ce à quoi la carte "vue" et "contrôleur" - sur un cadre donné - peut constituer un point de discorde.

La pyramide et les pylônes ont tous deux une fonctionnalité "répartiteur" pour configurer le mappage d'une requête. Sous les pylônes c'est dans config / routes.py; sous Pyramid c'est un peu différent - les scaffolds par défaut ont le routage dans app /init.py, mais vous êtes libre de le décomposer en app / routes.py ou d'utiliser config.include () pour le placer dans vos "handlers" ou config.scan () pour le retirer de vos "vues".

Les «gestionnaires» de pyramide sont fournis par pyramid_handlers, et ne sont en réalité que des «vues» avec un tas de trucs de génération automatique. Si vous le souhaitez, vos applications peuvent utiliser à la fois les gestionnaires AND vues (les miens).

Quoi qu’il en soit, en fonction de la manière dont vous interprétez MVC / MTC / etc, il s’agit d’un tableau non structuré de ce que vous pourriez souhaiter:

           || mvt            | mvc            | mvc
==========================================================================
model      || sqlalchemy     | sqlalchemy     | sqlalchemy
view       || views/handlers | templates      | views/handlers + templates
controller ||                | views/handlers | dispatch/routing
template   || templates      |                |

Note rapide - Je définis ce qui précède, non pas en fonction de mon interprétation ou de la définition «officielle» de MVC.


19
2018-02-28 17:33



Si vous le souhaitez, avec pyramide, vous pouvez simuler le modèle MVC:

  • Modèle: par exemple en utilisant sqlalchemy (http://docs.sqlalchemy.org)
  • Affichage: Utilisation de modèles et de méthodes d'affichage.
  • Controller: vous pouvez utiliser le package pyramid_handlers pour créer des contrôleurs et des actions de mappage définies dans une route vers des actions du contrôleur, par exemple:
   Classe HomeController (objet):
     def __init __ (self, request):
          self.request = request

      def form_proc (self):
          name = self.request.params ['nom']
          ... bla, bla, bla ...

Dans la configuration, vous pouvez ajouter quelque chose comme:

    config.add_handler ('home', '/ home / {action}',
                       handler = 'mypackage.HomeController')

Si vous mettez cette URL dans votre action de formulaire -> http: // SERVER_NAME / home / form_proc, vous pouvez traiter le formulaire.

Pyramid vous donne toute la flexibilité si vous en avez besoin.


11
2018-02-23 12:48



Du Introduction à la pyramide:

Vous dites que la pyramide est MVC, mais où est le contrôleur?

Les auteurs de la pyramide croient que le modèle MVC ne correspond tout simplement pas au Web   très bien. Dans une application Pyramid, il y a un   arbre de ressources, qui représente la structure du site et les vues, qui   ont tendance à présenter les données stockées dans l'arbre des ressources et   "modèle de domaine" défini par l'utilisateur. Cependant, aucune facilité fournie par le   le cadre correspond effectivement au concept de "contrôleur"   ou "modèle". Donc, si vous deviez lui donner un acronyme, je suppose que vous diriez   Pyramid est en réalité un framework "RV" plutôt qu'un framework "MVC".   "MVC", cependant, est assez proche en tant que surnom de classement général   à des fins de comparaison avec d'autres frameworks Web.


5
2018-02-17 19:36



J'ai de l'expérience avec CakePHP et maintenant je commence avec Pyramid et Python. Il n'y a pas de cartographie directe mais ce n'est pas parce que la pyramide fait les choses de manière étrange mais parce que les auteurs du cadre ont abusé du terme MVC.

Dans Cake, par exemple, certaines classes aiment appeler les «modèles», mais la plupart du temps, ce ne sont que des classes ORM. Les contrôleurs sont principalement utilisés comme espaces de noms pour les méthodes connexes appelées «actions», qui transmettent les données aux vues, qui ne sont que des modèles.

En termes de pyramide, les «ressources» sont les «modèles», et vous êtes libre d’utiliser ce que vous voulez ici. Si vous voulez un ORM, vous pouvez utiliser SQLAlchemy par exemple, mongodb ou autre.

Le cadre lui-même fonctionne comme des «contrôleurs», et les actions sont appelées «vues». Il peut s’agir de fonctions ou de classes normales, vous êtes libre de les organiser où vous le souhaitez. Cette vue peut utiliser un modèle et un rendu pour construire la réponse envoyée au navigateur.

J'espère que ça aide (veuillez excuser mon mauvais anglais)


2
2018-02-21 23:06