以前配置在工程同工程名的urls.py管理所有app的url
缺点:如果url太多就都写到这里,很乱,很长,没有分类。方然系统提供了一个空格'',作用是写共同的url部分,但是第二个app访问和映射都不同,先看看这种写法吧。
from django.conf.urls import patterns, include, url
urlpatterns = patterns('setapp.views',
url(r'setapp/index/$','index'),
url(r'setapp/time/$','time'),
)
不用的app采用不同的映射组,这样在多个app的时候就可以用不用分类,放不同url。这里是一个app没有必要分开
from django.conf.urls import patterns, include, url
urlpatterns = patterns('setapp.views',
url(r'setapp/index/$','index'),
url(r'setapp/time/$','time'),
)
urlpatterns += patterns('twoapp.views',
url(r'twoapp/index/$','index'),
url(r'twoapp/time/$','time'),
)
没有app,都有自己的urlpattens管理,看起来简介。但是这个文件中放了所有的,urls映射,我们可不可以把没有urls映射都放到自己的appurl中呢?答案是可以的。
可以在每个app中创建一个urls.py文件,这样每个app的url都自己管理了,结构很清楚,但是不觉得还需要外部配置urls.py中写出找到内部app中urls.py自己的映射。我们在最外部配置文件中的,urls.py中写出:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^setapp/',include('setapp.urls')),
url(r'^twoapp/',include('twoapp.urls')),
)
该映射的意思是
如果你地址中是setapp,就去setapp.urls文件中去找自己具体的映射。
如果你地址中是twoapp,就去twoapp.urls文件中去找自己具体的映射。
所以还需要设置具体。app中的url.py文件,这个文件刚才我已经提到了。
urlpatterns = patterns('twoapp.views',
url(r'^index/$','index'),
)
工程中的映射,可以定位到app映射文件,在app中写入自己的映射地址。
urlpatterns = patterns('',
url(r'^twoapp/',include('twoapp.urls')),
)
注意没有$结束符。没有匹配完呢,定位到文件所以加上了include定向函数。