我正在阅读Two Scoops Django最佳实践,以提高我的编码风格。我是相对导入的,下面是使其可重用的示例代码。
Old Way:
from cones.foo import bar
New way:
from .foo import bar
上面的代码适用于cones应用,如果我在其他应用中调用其他模型该怎么办?我必须这样说:
from .foo import bar
from .other import sample
OR
from .foo import bar
from test.other import sample
正确的方法是什么?
答案 0 :(得分:18)
我通常仅出于某种原因使用这样的导入
from .foo import bar
from .other import sample
原因是 如果明天,我的模块名称从'test'变为'mytest',则代码不需要重构。代码工作没有破坏。
所有以“。”开头的导入dot,仅在 该模块中运行。 交叉模块导入需要整个路径。
答案 1 :(得分:3)
如果test
是另一个应用,
from .other import sample
不会工作。
<强>更新强>
当您从同一个应用程序导入时,您只能使用相对导入。
内部test
app
from .other import sample
会奏效。但是你仍然需要完整的表格
from cones.foo import bar
如果您从foo
app。
test
中定义的方法
回答你的问题,第二种方式是正确的方法。