【问题标题】:Extending my application - Pyramid/Pylons/Python扩展我的应用程序 - Pyramid/Pylons/Python
【发布时间】:2011-09-11 00:15:36
【问题描述】:

关于扩展我的应用程序的简单问题

假设我有一个“主应用程序”,在这个应用程序中我的 _init_.py 文件中有以下内容:

config.add_route('image_upload', '/admin/image_upload/', 
    view='mainapp.views.uploader',
    view_renderer='/site/upload.mako')

在views.py中我有:

def uploader(request):
    # some code goes here
    return {'xyz':xyz}

现在当我创建一个新的应用程序,并且我想扩展它时,使用上面的视图和路由:

在新的应用程序 _init_.py 文件中,我将手动复制 config.add_route 代码:

config.add_route( 'image_upload', '/admin/image_upload/', 
   view='mainapp.views.uploader', 
   view_renderer='mainapp:templates/site/upload.mako'
 )

这就是我需要做的一切吗?这样我的应用程序就可以使用主应用程序中的视图和模板,还是我缺少其他东西?

感谢阅读!

【问题讨论】:

    标签: python pylons pyramid


    【解决方案1】:

    您无需复制代码即可执行此操作。使用Configurator.include 方法将您的“主应用程序”配置包含在您的新应用程序中。文档很好地解释了herehere,但本质上,如果您在可调用对象中声明主应用配置:

    def main_app_config(config):
    
        config.add_route('image_upload', '/admin/image_upload/', 
        view='mainapp.views.uploader',
        view_renderer='/site/upload.mako')
    

    然后您可以将您的主应用程序包含在新应用程序的配置中,如下所示:

    from my.main.app import main_app_config
    
    # do your new application Configurator setup, etc.
    # then "include" it.
    
    config.include(main_app_config)
    
    # continue on with your new app configuration
    

    【讨论】:

    • 您知道如何解决以下错误吗:UnboundExecutionError: Could not locate a bind configured on mapper Mapper|projects|projects, SQL expression or this Session 视图正在查询表(我也希望它在新应用程序中使用数据库,而不是原始应用程序中的数据库)应用程序。)
    • @sidewinder 从错误中听起来好像您还没有为您的主应用程序数据库创建 sqla 引擎。您可以配置 SqlAlchemy 来管理单独的引擎等,或者我过去只是使用主应用程序的 sqla 配置并在我的新应用程序中扩展它。这实际上取决于您的应用程序如何相互集成。最好的办法是创建一个新问题,您可以在其中更详细地概述您的问题。
    • 感谢您的回复马克。 SQLA 配置似乎从双方都可以。不过,对我有用的是通过在新应用程序 init.py 文件中更改它:from mainapp.models import initialize_sql 所以我从主应用程序导入 initialize_sql。你以前的申请也是这样吗,我很想知道。
    猜你喜欢
    • 2011-05-17
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2012-04-19
    相关资源
    最近更新 更多