如何使用python27 app engine webapp2框架组织文件

时间:2012-06-24 23:20:22

标签: python google-app-engine python-2.7 webapp2

我已经完成了python27和app引擎的入门:https://developers.google.com/appengine/docs/python/gettingstartedpython27/

在tut结束时,所有类都在同一个文件中(helloworld.py),您和您配置路由器以指向文件底部的类的URL路径:

 app = webapp2.WSGIApplication([('/', MainPage),
                           ('/sign', Guestbook)],
                          debug=True)

Tut未涵盖的是我如何随着应用程序的增长而对我的类/文件进行设置。例如,我将MainPage放在一个单独的文件中,然后在helloworld.py文件中调用'import MainPage'并将路由添加到WSGIApplication中吗?有没有比这更自动化的东西?我该怎么称呼MainPage文件?我应该在哪里存储它?

1 个答案:

答案 0 :(得分:9)

优先在app-startup导入所有处理程序是为了利用webapp2's lazy handler loading根据需要加载模块/软件包。
所以你有几个选择:

选项1,模块中的处理程序
MainPage放在与helloworld.py文件相同级别的另一个文件(模块)中:

/my_gae_app
    app.yaml
    helloworld.py
    handlers.py

在您的路由中(在helloworld.py中),您可以执行以下操作:

app = webapp2.WSGIApplication([('/', 'handlers.MainPage'),
                               ('/sign', 'handlers.Guestbook')],
                              debug=True)

选项2,包中的处理程序;也许考虑你的应用程序变大
随着您的应用变得越来越大,您可能希望创建一个用于放置处理程序的包:

/my_gae_app
    /handlers
        __init__.py
        guestbook.py
        main.py
    app.yaml
    helloworld.py

路线(helloworld.py):

app = webapp2.WSGIApplication([('/', 'handlers.main.MainPage'),
                               ('/sign', 'handlers.guestbook.Guestbook')],
                              debug=True)