2015-10-19 79 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