2015-10-19 69 views
-1

可能有人请给我关于如何工作的完整的解释:相对进口Django模型

虽然models.py和views.py是上一个Django应用程序相同的目录,我们为什么要使用相对进口:

app1: 
    models.py 
    # my models was defined here 

    views.py 
    from .models import *  # this works 
    from app1.models import * # this also works 
    from models import *  # ---this one does not work --- 

同样将admin.py

happend如果我输入

from .models import * 

然后

python manage.py check 

一切都确定 但

from models import * 



python manage.py check 

ImportError: No module named 'models

我现在使用的Python 3.4.x和我没有这个问题,2.7.x

+4

监守Django的应用程序的执行是上述程序app1一个文件夹。 – KronoS

+1

执行文件是manage.py,那么请解释它在哪里以及它是如何工作的? – Serjik

+0

所以.models python应该在执行文件父目录中找到模型模块?那么它将如何在app目录中找到? – Serjik

回答

1

这将有助于了解你所使用的Python的版本,但我想这是Python的3.报价PEP 8:

隐相对进口不应该被使用,并在Python 3已被删除

我会建议通读PEP 8的进口部分,在这里:https://www.python.org/dev/peps/pep-0008/#imports

如果你想为了阅读更多关于这个话题,我建议PEP 328,这更详细地介绍绝对与相对进口的基本原理。

下面是一个更明确的说明有关python 3相对于进口的其他链路:

Changes in import statement python3

+0

我找到了最好的答案在这里:http://stackoverflow.com/questions/12172791/changes-in-import-statement-python3 – Serjik