金字塔项目结构

uda*_*ode 17 python pyramid

我正在金字塔中开发一个相当大的项目.我之前用过django.我非常喜欢它构建项目的方式,并将功能封装到应用程序中.我想用金字塔实现相同的结构.我知道金字塔非常灵活,但是我需要一些帮助来实现松散耦合的相同结构.项目结构应该类似于:

  Project/
         app1/
             models.py
             routes.py
             views.py
         app2/
             models.py
             routes.py
             views.py
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Mic*_*kel 28

由于金字塔首先不对您的包结构做出任何假设,因此您划分应用程序的任何方式最终都会在配置上非常相似.但是,如果您将应用程序分解为某些不同的包,则可以(可选)利用该config.include()指令将每个包包含到主配置中.

例如:

# myapp/__init__.py (main config)
def main(global_config, **settings):
    config = Configurator(...)
    # basic setup of your app
    config.include('pyramid_tm')
    config.include('pyramid_jinja2')

    # add config for each of your subapps
    config.include('project.app1')
    config.include('project.app2')

    # make wsgi app
    return config.make_wsgi_app()

# myapp/app1/__init__.py (app1's config)
def includeme(config):
    config.add_route(...)
    config.scan()

# myapp/app2/__init__.py (app2's config)
def includeme(config):
    config.add_route(...)
    config.scan()
Run Code Online (Sandbox Code Playgroud)

在每个子应用程序中,您可以定义视图/模型/等.

通常,您可能希望在公共设置中创建SQLAlchemy(或其他数据库)会话,因为您的不同应用程序可能都使用相同的引擎.