13

我正在阅读 Two Scoops Django Best Practices 以改进我的编码风格。我处于相对进口中,这是使其可重用的示例代码。

Old Way:
from cones.foo import bar

New way:
from .foo import bar

上面的代码是针对cones app的,如果我在其他app中调用其他模型怎么办?我必须这样说:

from .foo import bar
from .other import sample

OR

from .foo import bar
from test.other import sample

正确的方法是什么?

4

2 回答 2

21

我通常只出于一个原因使用这样的导入

from .foo import bar
from .other import sample

原因是如果明天,我的模块名称从“test”更改为“mytest”,那么代码不需要重构。该代码可以正常工作而不会中断。

更新

所有以“。”开头的导入 点,仅适用该软件包。跨包导入需要整个路径。

于 2013-02-08T07:15:24.653 回答
3

如果test是另一个应用程序,

from .other import sample

不会工作。

更新:

当您从同一个应用程序导入时,您只能使用相对导入。

内部test应用

from .other import sample

将工作。但是您仍然需要完整的表格

from cones.foo import bar

如果您footest应用程序中导入定义的方法。

因此,第二种方式回答您的问题是正确的方式。

于 2013-02-08T07:16:32.283 回答