Pyramid(Pylons)的新文件/目录结构让我有些困惑

时间:2010-11-09 02:37:50

标签: python frameworks pylons pyramid

我现在已经在Pylons开发了一段时间,并且最近了解到他们正在与另一个框架合并以创建金字塔。

我一直在查看example code以查看差异,这会造成一些混乱......

例如,控制器已被视图替换。不是一个大问题...但我觉得有趣的是没有这些目录。它只是一个文件:views.py

这个新的MVC结构如何运作?我是否将所有操作都写入此文件?当我有类似命名的动作(例如多个索引)时,这可能会变得相当烦人:/

你能指点我一些关于如何使用这个框架的好教程/文档的方向吗?

2 个答案:

答案 0 :(得分:26)

由于各种与视图相关的配置方法(config.add_view,config.add_handler)要求您将点名称作为要用作视图或处理程序的类或函数传递,因此您可以根据需要排列代码。

例如,如果您的项目包名称为myproject,并且希望将所有视图排列在名为“views”的myproject包中的Python子包中(请参阅http://docs.python.org/tutorial/modules.html#packages),而不是单个视图文件,您可以:

  • views包中创建mypackage目录。

  • 现有的views.py文件移动到名为的新views目录中的文件中,例如, blog.py

  • 在名为views的新__init__.py目录中创建一个文件(它可以为空, 这只是告诉Python views目录是

然后更改__init__.py项目的myproject您在__init__.py目录中创建的views,其中的config.add_handler('myhandler', '/my/handler', handler='mypackage.views.MyHandler')父目录)来自:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.blog.MyHandler')

要:

views

然后,您可以继续将文件添加到handler=目录,并通过作为view=或{{1}}传递的带点名称引用这些文件中的视图或处理程序类/函数。 / p>

答案 1 :(得分:5)

这是一个应该非常直接的答案。当金字塔1.3尚未出现时,人们会问这个问题。所以忘了python处理程序,因为新的装饰器现在做得很好。

但是刚开始:金字塔没有任何共同的结构。如果需要,您可以在一个文件中编写整个应用程序。换句话说,如果你喜欢塔架的结构,你就可以使用它。如果您更喜欢设置自己的结构,那就去吧。

如果您的网站不需要多个文件,那么......去吧!你真正需要的是它的工作原理。

我个人有这样的结构

- root
    - __init__.py # all setup goes there
    - security.py # where functions related to ACL and group_finder
    - models.py or models/ # where all my models go
    - views.py or views/   # where all my views go 
    - templates
       - modelname
          - all template related to this resource type

    - scripts # where I put my scripts like backup etc
    - lib # all utilities goes there
    - subscribers # where all events are defined

我的视图包有时可能会被拆分为许多文件,我按资源类别对视图进行分组。

如果您碰巧使用上下文来匹配视图而不是路由。你可以使用view_defaultsview_config做一些非常好的事情。

view_defaults为该类设置了一些默认值,view_config使用view_defaults提供的默认值为defs设置了更多配置(如果存在)。