我已经在 Pylons 中开发了一段时间,最近了解到它们正在与另一个框架合并以创建 Pyramid。
我一直在查看示例代码以查看差异,这引起了一些混乱......
例如,控制器已被视图取代。不是一个大问题......但我发现有趣的是这些没有目录。它只是一个文件:views.py
.
这种新的 MVC 结构是如何工作的?我是否将所有操作都写入这个文件?当我有类似命名的动作(例如,多个索引)时,这可能会变得相当烦人:/
您能否指出一些关于如何使用这个框架的好教程/文档的方向?
我已经在 Pylons 中开发了一段时间,最近了解到它们正在与另一个框架合并以创建 Pyramid。
我一直在查看示例代码以查看差异,这引起了一些混乱......
例如,控制器已被视图取代。不是一个大问题......但我发现有趣的是这些没有目录。它只是一个文件:views.py
.
这种新的 MVC 结构是如何工作的?我是否将所有操作都写入这个文件?当我有类似命名的动作(例如,多个索引)时,这可能会变得相当烦人:/
您能否指出一些关于如何使用这个框架的好教程/文档的方向?
由于各种与视图相关的配置方法(config.add_view、config.add_handler)要求您将一个带点的名称作为类或函数传递给用作视图或处理程序的类或函数,因此您可以随意排列代码。
例如,如果您的项目包名称是myproject
并且想要将所有视图排列在myproject
名为“views”的包内的 Python 子包中(请参阅http://docs.python.org/tutorial/modules.html#packages),而不是单个视图文件,您可以:
在你的包中创建一个views
目录。mypackage
将现有views.py
文件移动到新views
目录中的文件中,例如
blog.py
.
views
在名为的新目录中创建一个文件__init__.py
(它可以是空的,这只是告诉 Python 该views
目录是一个package。
然后从以下内容更改__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=
。
这是一个应该非常直截了当的答案。这个问题是在 Pyramid 1.3 尚未发布时提出的。所以忘记python处理程序,因为新的装饰器现在做得很好。
但只是开始:金字塔没有任何共同的结构。如果您愿意,您可以在一个文件中编写整个应用程序。换句话说,如果你喜欢 pylons 的结构,你可以选择它。如果您更喜欢设置自己的结构,那就去吧。
如果您的网站不需要多个文件,那么...去吧!!!您真正需要的是它有效。
我个人有这样的结构
- 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_defaults和view_config做一些非常好的事情。
view_defaults
为类设置一些默认值,并使用如果存在view_config
提供的默认值为 defs 设置更多配置。view_defaults