2016-11-22 50 views
0

我已創建一個非常簡單的Django項目(Python 2.7版)與命令:Django的奇怪行爲,包括

django-admin.py startproject projet7 
cd projet7 
django-admin.py startapp app7 
mkdir -p app7/api/rest 
touch app7/api/__init__.py 
touch app7/api/rest/__init__.py 

我創建app7/API/REST/urls_api.py:

from django.conf import urls 
urlpatterns = [] 

def register(view): 
    p = urls.url(view.url_regex, view.as_view()) 
    urlpatterns.append(p) 
    return view 

,我在projet7/urls.py

from django.conf.urls import include 
from app7.api.rest import urls_api 
... 
urlpatterns = [ 
    ... 
    url(r'^api/', include(urls_api)), 
] 

它的工作原理!大

但是,如果我添加此相反,在projet7/urls.py:

from django.conf.urls import include 
    from app7.api import rest 
    ... 
    urlpatterns = [ 
     ... 
     url(r'^api/', include(rest.urls_api)), 
    ] 

它不工作。我得到這個錯誤。我不懂爲什麼。它應該是一樣的?

AttributeError: 'module' object has no attribute 'urls_api' 

感謝

回答

1

嘛,它只是不一樣的。

當你做from app7.api import rest,你幾乎進口app7/api/rest/__init__.py

os.path可能是,你知道從這個進口的風格,而且它有special magic,使所有發生。)

我會簡單地認爲進口的最具體的模塊,或者如果你是絕對相信你不想這樣做,import .urls_api as urls_apirest/__init__.py(但要小心任何最終可能的循環導入問題)。