django中的路由分发include

django路由分发的本质:include

django进行路由分发可用以下方式:

方式一

from django.conf.urls import url,include
urlpatterns = [
    url(r'^web/',include('app01.urls')),
]

 

通过分析源码,可以通过其它方式:

方式二

include函数主要返回三个元素的元组:urls,app_name,namespace

设置namespace必须先要设置app_name, 默认都为None

from django.conf.urls import url,include
from app01 import urls
urlpatterns = [
    # 第一个参数是urls文件对象,可通过urls.patterns获取分发的路由
    url(r'^web/', (urls, app_name, namespace)),
]
​
# 在源码内部,读取路由时:
如果第一个参数urls有 patterns属性,那么子路由就从该属性中去取
如没有,子路由就是第一个参数urls

 

方式三

from django.conf.urls import url
urlpatterns = [
    url(r'^web/',([
        url(r'^index/', views.index)
        url(r'^home/', views.home)
    ],app_name, namespace),
]

以后做路由分发可以直接这样写:

urlpatterns = [
    url(r'^web/',([
        url(r'^index/', views.index)
        url(r'^home/', views.home)
    ],None, None),
]

 

原文地址:https://www.cnblogs.com/Deaseyy/p/13835900.html