您的位置:首页 > 编程语言 > Go语言

Django urls.py的集中管理配置

2017-03-26 08:57 302 查看


以前配置在工程同工程名的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

 





from django.conf.urls import include, url  

from django.contrib import admin  

from Home import views  as Home  

  

urlpatterns = [  

    url(r'^admin/', admin.site.urls),  

    url(r'^user/', include('User.urls')),  

    url(r'^information/', include('Information.urls')),  

    url(r'^$', Home.Main, name="Main"),  

]  

User的urls.py:

[python] view
plain copy

 





from django.conf.urls import url  

  

from . import views  

  

urlpatterns = [  

    url(r'^home/(?P<User_id>[0-9]+)/$', views.UserHome, name='UserHome'),  

    url(r'^home/(?P<User_id>[0-9]+)/changeinfo/$', views.Changeinfo, name='Changeinfo'),  

    url(r'^home/(?P<User_id>[0-9]+)/changeimg/$', views.Changeimg, name='Changeimg'),  

    url(r'login/$', views.login, name='login'),  

    url(r'logout/$', views.logout, name='logout'),  

]  

Infomation的urls.py:

[python] view
plain copy

 





from django.conf.urls import url  

  

from . import views  

  

urlpatterns = [  

        url(r'^(?P<Information_id>[0-9]+)/$',views.Information,name='information'),  

        url(r'^essayList/(?P<EssayList_page>[0-9]+)/$',views.EssayList,name="EssayList"),  

        url(r'edit/$', views.edit, name='edit01'),  

        url(r'store/$', views.store, name='edit'),  

]  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: