金字塔:Pyramid/Python中PHP框架中MVC的等价物?

Phi*_*hil 11 python model-view-controller pyramid

什么是金字塔/ Python等效的模型 - 视图 - PHP框架的控制器,如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 .....
Run Code Online (Sandbox Code Playgroud)

我想了解金字塔的逻辑.作为答案的补充,任何帮助,文档等将不胜感激.

谢谢.

Jon*_*sco 20

Pylons是连接在一起成为Pyramid的两个框架之一(另一个是repoze.bfg)与MVC系统"接近".

我接近引用,因为在过去的几年里,很多人一直在争论MVC意味着什么...许多曾经称自己为"MVC"的项目开始称他们为"MTC"(模型模板控制器)" MT"(模型模板)或"MV"(模型视图).每个人都同意"模型"是什么,但"视图"和"控制器"在给定框架上映射的确切内容可能是一个争论点.

金字塔和挂架都具有"调度程序"功能,可以为请求设置映射.在pylons下它在config/routes.py; 在金字塔下它有点不同 - 默认的脚手架在app/init .py中有路由,但你可以自由地将它分解为app/routes.py或使用config.include()将其推送到你的处理程序'或config.scan()将其从'视图'中拉出来.

金字塔中的"处理程序"由pyramid_handlers提供,实际上只是"视图"中有一堆自动生成的东西.如果你愿意,你的应用程序可以使用处理程序和视图(我的).

无论如何,根据你如何解释MVC/MTC /等,这是一个你可能想要的松散表格:

           || mvt            | mvc            | mvc
==========================================================================
model      || sqlalchemy     | sqlalchemy     | sqlalchemy
view       || views/handlers | templates      | views/handlers + templates
controller ||                | views/handlers | dispatch/routing
template   || templates      |                |
Run Code Online (Sandbox Code Playgroud)

快速注意 - 我定义上述内容并非基于我的解释或"官方"MVC定义是什么......它基于其他流行框架如何推销自己.


Ant*_*mud 11

如果您愿意,可以使用金字塔模拟MVC模式:

  • 型号:例如使用sqlalchemy(http://docs.sqlalchemy.org)
  • 视图:使用模板和视图方法.
  • 控制器:您可以使用包pyramid_handlers来创建控制器和映射动作中定义的操作,以控制控制器中的操作,例如:
   Class HomeController(object):
     def __init__(self, request):
          self.request = request

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

在配置中,您可以添加以下内容:

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

如果您将此网址放在表单操作 - > http:// SERVER_NAME/home/form_proc中,则可以处理该表单.

金字塔为您提供所有灵活性,如果您需要它.


Wil*_*uck 5

来自金字塔简介:

你说金字塔是MVC,但控制器在哪里?

金字塔的作者认为,MVC模式并不能很好地适应网络.在Pyramid应用程序中,有一个资源树,它代表站点结构和视图,它们倾向于呈现存储在资源树中的数据和用户定义的"域模型".但是,框架提供的任何设施实际上都不一定映射到"控制器"或"模型"的概念.所以,如果你不得不给它一些首字母缩略词,我想你会说金字塔实际上是一个"RV"框架而不是"MVC"框架.然而,"MVC"作为一般分类名称与其他Web框架进行比较是足够接近的.