Google App Engine - 如何将代码拆分为多个文件?(web应用)

foo*_*yee 15 python google-app-engine web-applications

我有一个关于拆分main.py文件的问题.

现在,我在main.py中有所有内容.我没有其他.py文件.在到达我想编辑的部分之前,我总是需要滚动长行代码.

我该如何拆分?(我将有超过20页,所以这意味着如果我不拆分它,main.py将是巨大的.

PS:另外,我注意到我每次都必须设置模板值,模板路径和调用template.render.有什么方法可以缩短它们吗?

码:

    # everything here in main.py
class MainPage(webapp.RequestHandler):
    def get(self):
        # Models are queried here, results transferred to template_values

        template_values = {
            'value1': value1,
            'value2': value2,
            'value3': value3,
            }

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))

class Page2(webapp.RequestHandler):
    def get(self):
        # Models are queried here, results transferred to template_values

        template_values = {
            'value1': value1,
            'value2': value2,
            'value3': value3,
            }

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))

class Page3(webapp.RequestHandler):
    def get(self):
        # Models are queried here, results transferred to template_values

        template_values = {
            'value1': value1,
            'value2': value2,
            'value3': value3,
            }

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))


application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/page2', Page2)
                                      ('/page3', Page3)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

Bla*_*rad 22

拆分代码与拆分任何Python应用程序的代码没什么不同 - 找到一堆相关代码,要移动到另一个文件,将其移动到该文件,然后将其导入主处理程序文件.

例如,您可以将Page2代码移动到page2.py,put

import page2
Run Code Online (Sandbox Code Playgroud)

在你的文件的顶部,并改变你的映射来加载/page2page2.Page2(你可能想在这种情况下,重命名这些类...

或者,您可以通过编辑app.yaml文件来使单独的.py文件处理不同的(页面组)页面,如脚本处理程序中所述.

您可以将模板处理代码包装在一个便利函数中并调用它,以减少重复的代码.您可以简化模板值的加载,但是一旦想要渲染,就可以调用类似的方法

def render(template_file, template_values):
    path = os.path.join(os.path.dirname(__file__), template_file)
    self.response.out.write(template.render(path, template_values))
Run Code Online (Sandbox Code Playgroud)

这不是很节省,但它更具可读性.可能你想要移动render到一个不同的文件,import它可以在你想要的地方.