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

dav*_*ave 9 python pylons frameworks pyramid

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

我一直在查看示例代码以查看差异,这会引起一些混乱......

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

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

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

Chr*_*ugh 26

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

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

  • 创建一个 viewsmypackage包中目录.

  • 移动现有的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=.


Loï*_*oix 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
Run Code Online (Sandbox Code Playgroud)

我的视图包有时可能会拆分到许多文件中,我按ResourceType对视图进行分组.

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

view_defaults为类设置一些默认值,并view_config使用view_defaultsif present 提供的默认值为defs设置更多配置.