2013-04-08 33 views
6

我有以下結構(Django的1.4):Django的 - 包括應用網址

containing_dir/ 
    myproject/ 
     myapp1/ 
     myapp2/ 
     myapp3/ 

myproject,而myapp1,myapp2和myapp3都有初始化的.py,所以他們的所有模塊。

在manage.py(下containing_dir)我有os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

在myproject.settings我定義:

[..] 
ROOT_URLCONF = 'myproject.urls' 
INSTALLED_APPS = ( 
    [..] 
    'myproject.myapp1', 
    'myproject.myapp2', 
    'myproject.myapp3', 
) 
[..] 

在myapp1.urls.py我定義:

urlpatterns = patterns('myapp1', 
    url(r'^agent/$', 'views.agent', name='agent') 
) 

和我嘗試導入它myproject.urls我嘗試導入myapp1這樣的網址:

(r'^myapp1/', include('myproject.myapp1.urls')) 

,但每當我試圖LO負載localhost:8000/myapp1/agent我得到

Exception Value: No module named myapp1 

我覺得從withing myapp1.urls

任何幫助拋出?謝謝

回答

0

請問ROOT_URLCONF需要指向myproject.urls

如果您將您的應用程序置於myproject之內,則需要使用正確的view prefix

urlpatterns = patterns('myproject.myapp1', 
... 
+1

是的,因爲我希望能夠創建可重用和可拆卸的應用程序。 – pistacchio

+0

@pistacchio然後,您很可能需要爲應用程序創建一個安裝腳本,以便將它們添加到python路徑中。或者手動添加它們。 – Ngenator

6

你必須有你 「的myproject」 目錄內

__init__.py 

文件。當你說:

(r'^myapp1/', include('myproject.myapp1.urls')) 

你在說「myproject」(以及myapp1)是一個python packege。

3

在myproject.settings做出以下更改:

INSTALLED_APPS = ( 
[..] 
'myapp1', 
'myapp2', 
'myapp3', 
) 
0

嘗試:

urlpatterns = [ 
    ... 
    url(r'^app_name/', include('app_name.urls', namespace='project_name')) 
    ... 
]