Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google应用程序引擎-如何将代码拆分为多个文件?(网络应用程序)_Python_Google App Engine_Web Applications - Fatal编程技术网

Python Google应用程序引擎-如何将代码拆分为多个文件?(网络应用程序)

Python Google应用程序引擎-如何将代码拆分为多个文件?(网络应用程序),python,google-app-engine,web-applications,Python,Google App Engine,Web Applications,我有一个关于拆分main.py文件的问题 现在,我把所有的东西都放在我的主目录里。我没有其他.py文件。在到达我想要编辑的部分之前,我总是要滚动一长行代码 我该怎么分呢? (我将有20多页,这意味着如果我不拆分main.py,它将非常庞大 另外,我注意到我每次都要设置模板值、模板路径和调用template.render。有没有办法缩短它们 代码: 在其他.py文件中定义您的类,并在main.py文件中使用“导入”来使用它们。实际上这非常简单。拆分代码与拆分任何Python应用程序的代码没有什么不

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

现在,我把所有的东西都放在我的主目录里。我没有其他.py文件。在到达我想要编辑的部分之前,我总是要滚动一长行代码

我该怎么分呢? (我将有20多页,这意味着如果我不拆分main.py,它将非常庞大

另外,我注意到我每次都要设置模板值、模板路径和调用template.render。有没有办法缩短它们

代码:


在其他.py文件中定义您的类,并在main.py文件中使用“导入”来使用它们。实际上这非常简单。

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

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

import page2
在文件顶部,将映射更改为从
page2.page2
加载
/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))

虽然节省不多,但可读性更强。您可能希望将
渲染
移动到不同的文件,然后
将其导入所需的位置。

对于输入,非常感谢

至于将导入分组,我尝试将所有与应用程序引擎相关的导入保存到一个名为ext.py的.py文件中

然后我把它叫到任何我想用的地方

from ext import *
ext.py包含以下内容:

import os

# import from appengine's libs
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
from google.appengine.ext import db

# import models
from models import *

我注意到,当我将Page2类从main.py中分离出来时,我仍然需要导入Page2.py文件顶部的appengine libs。这有点多余。有什么建议吗?这可能是一个单独的问题,因为我们现在确实在这一个问题中打包了很多信息,但是…一个答案是在ext中创建变量,这个镜像您的导入。此处的格式将不好,但类似于:
import google.appengine.ext.webapp;webapp=google.appengine.ext.webapp
,然后当您的其他模块导入ext时,它们可以引用ext.webapp(或者使用
from ext import
来谈论webapp).我的策略是移动到新的位置并保留帖子,因为帖子是最关键的,而且已经起作用了。
import os

# import from appengine's libs
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
from google.appengine.ext import db

# import models
from models import *