【问题标题】:The new file/directory structure of Pyramid (Pylons) is causing me some confusionPyramid(Pylons)的新文件/目录结构让我有些困惑
【发布时间】:2011-05-07 00:17:59
【问题描述】:

我已经在 Pylons 中开发了一段时间,最近了解到它们正在与另一个框架合并以创建 Pyramid。

我一直在查看 example code 以查看差异,这引起了一些混乱......

例如,控制器已被视图取代。不是什么大问题......但我发现有趣的是这些没有目录。这只是一个文件:views.py

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

您能否指出一些关于如何使用这个框架的好教程/文档的方向?

【问题讨论】:

    标签: python frameworks pylons pyramid


    【解决方案1】:

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

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

    • 在您的 mypackage 包中创建一个 views 目录。

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

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

    然后将myproject 项目的__init__.py 更改为以下内容(不是您刚刚在views 目录中创建的__init__.py,即其父目录中的那个):

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

    收件人:

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

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

    【讨论】:

    • 我曾考虑过创建自己的目录结构,但不知道该怎么做。 handler 属性似乎让这很容易。干杯。
    • n.b.无论您是否使用add_handler,从views.py 文件移动到views/ 目录同样容易。 Pyramid 只是从一个文件开始,因为一个目录对于一个小项目来说是多余的。
    • 我可以在 config.scan 函数中添加处理程序吗?
    【解决方案2】:

    这是一个非常直接的答案。这个问题是在 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_defaultsview_config 做一些非常好的事情。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多