Django urls.py的集中管理配置

以前配置在工程同工程名的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定向函数。

Django的每个项目都有一个总的urls.py

但是整个项目的所有的applications中,不同的路由全部结合在总的urls.py会很混乱;

有这样一种解决方法就是我们在每一个app里面自己编辑一个urls.py,然后在app内的urls.py里面定义自己的路由,然后总的urls.py里include每个app的urls.py文件

like this:

总的urls.py文件,包含两个app,User和Information

[python]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. from django.conf.urls import include, url  
  2. from django.contrib import admin  
  3. from Home import views  as Home  
  4.   
  5. urlpatterns = [  
  6.     url(r'^admin/', admin.site.urls),  
  7.     url(r'^user/', include('User.urls')),  
  8.     url(r'^information/', include('Information.urls')),  
  9.     url(r'^$', Home.Main, name="Main"),  
  10. ]  

User的urls.py:

[python]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. from django.conf.urls import url  
  2.   
  3. from . import views  
  4.   
  5. urlpatterns = [  
  6.     url(r'^home/(?P<User_id>[0-9]+)/$', views.UserHome, name='UserHome'),  
  7.     url(r'^home/(?P<User_id>[0-9]+)/changeinfo/$', views.Changeinfo, name='Changeinfo'),  
  8.     url(r'^home/(?P<User_id>[0-9]+)/changeimg/$', views.Changeimg, name='Changeimg'),  
  9.     url(r'login/$', views.login, name='login'),  
  10.     url(r'logout/$', views.logout, name='logout'),  
  11. ]  


Infomation的urls.py:

[python]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. from django.conf.urls import url  
  2.   
  3. from . import views  
  4.   
  5. urlpatterns = [  
  6.         url(r'^(?P<Information_id>[0-9]+)/$',views.Information,name='information'),  
  7.         url(r'^essayList/(?P<EssayList_page>[0-9]+)/$',views.EssayList,name="EssayList"),  
  8.         url(r'edit/$', views.edit, name='edit01'),  
  9.         url(r'store/$', views.store, name='edit'),  
  10. ]  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值