0

是否可以仅在一个位置包含库/包?

class Sample( db.Model ):
  randomText = db.StringProperty( multiline = True )

--

from google.appengine.ext import db
from project.models import Sample
class SampleHandler( ):
  def get( self ):
    xamp = Sample.all( )

由于处理程序已经从 google.appengine.ext 库/包中导入了 db,然后导入了模型,我假设您不必再次将它包含在模型本身中。但是,看起来我必须这样做,无论如何?

有人愿意解释吗?

4

1 回答 1

2

您需要在使用它们的地方导入模块。

如果您的models模块使用该google.appengine.ext.db模块,则需要将其导入那里,而不是在您的处理程序模块中。

导入事物会在您的模块命名空间中创建对该“事物”的引用,以便那里的代码在使用它时可以找到它。db是您可以使用 中定义的对象的本地名称google.appengine.ext

如果您的处理程序使用相同的对象,它仍需要导入该对象。如果通过导入处理程序模块中突然可用的models 所有名称models,您最终会遇到名称冲突和难以调试的错误。

反之亦然,如果只google.appengine.ext.db在您的处理程序模块中导入而不在您的models模块中工作,您需要将给定模块的所有依赖项连同模块本身一起导入。这很快变得不可行,因为您需要记录models模块需要的所有内容才能使用它。

于 2013-04-14T12:05:12.077 回答