2014-09-25 96 views
1

我知道,這實際上是django的基礎知識但是django - 將urls.py拆分成多個

我試圖將我的巨大的urls.py拆分爲3個部分。所有3個urls_xxx.py都在一個文件夾下:mysite

然後在主urls.py我所做的:

#urls.py 
urlpatterns += patterns('', 

    url(r'^', include('urls_search')), 
    url(r'^', include('urls_ajax')), 
    url(r'^', include('urls_sitemaps')), 

) 

但他說:

ImportError at/
No module named urls_search 

這是urls_search.py​​:

urlpatterns = patterns('myapp.views', 
    url(r'^advancedsearch/$', 'advsearch', name="advsearch"), 
    url(r'^advancedsearch/tc/$', 'advtcsearch', name="advtcsearch"), 
) 

我的URL配置:

ROOT_URLCONF = 'mysite.urls' 

我做錯了什麼?我使用Django 1.4

+0

如果你正在使用include,請確保你在mysite文件夾中有____init____.py :) – ruddra 2014-09-25 21:38:36

+0

@ruddra基本上,mysite文件夾總是有* __ init __。py *,因爲它有settings.py。 ;) – doniyor 2014-09-25 21:52:16

+0

好吧,恩......我檢查過include的源代碼,它將一個字符串作爲參數,假設它指示模塊中存在一個urlconf。我不確定,但我認爲它顯示應用程序文件夾或包。如果你的文件夾有一個init,並且我猜你的url_xxx.py有urlconf(比如urlpatterns = patterns(..)),我想你應該把你的urls_xxx.py放在app目錄中,並測試它是否工作。 :) – ruddra 2014-09-25 22:00:23

回答

3

刪除.py這樣的:

url(r'^', include('mysite.urls_search')), 
+0

不工作,同樣的錯誤 – doniyor 2014-09-25 20:57:05

+0

我也從我的問題中刪除''.py''。 – doniyor 2014-09-25 20:59:55

+0

@ doniyor試試我的編輯 – 2014-09-25 21:14:04

2

可以在主 'urls.py' 這樣做:

from mysites.url_1 import urlpatterns as url1 
from mysites.url_2 import urlpatterns as url2 
from mysites.url_3 import urlpatterns as url3 

urlpatterns = url1 
urlpatterns += url2 
urlpatterns += url3 
-1

主要url.py

from mysites import url1 
from mysites import url2 
from mysites import url3 

urlpatterns = url1.urlpatterns 
urlpatterns += url2.urlpatterns 
urlpatterns += url3.urlpatterns 

+0

這與所有其他答案的字面意思相同。 – 2017-10-24 11:25:11

+0

是的,它是......但是卻沒有什麼不同。如果新手可能難以理解上述內容,這可能足以解決他們的理解水平問題。 – 2017-11-06 09:33:06