2014-09-25 98 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