django - 路由分发的本质(include)

django - 路由分发的本质(include)

方式1:常规用法

# django2.x中:还需要在app01.urls.py中添加:app_name = "app01"
from django.conf.urls import url,include

    urlpatterns = [
        url(r'^web/', include("app01.urls", namespace="web")),
    ]
  • 此时,需要在app01/urls.py文件中指定app_name= "app01"

方式2:include源码返回方式

# include函数主要返回有三个元素的元组。
from django.conf.urls import url,include
from app01 import urls
urlpatterns = [
        url(r'^web/', (urls, app_name, namespace) ),
]
    
 # 第一个参数是urls文件对象,通过此对象可以获取urls.patterns获取分发的路由。

方式3:django源码执行本质

# 在源码内部,读取路由时:
# 如有第一个参数有:urls.patterns 属性,那么子路由就从该属性中后去。
# 如果第一个参数无:urls.patterns 属性,那么子路由就是第一个参数。

from django.conf.urls import url

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

# 第一个参数是urls文件对象,通过此对象可以获取urls.patterns获取分发的路由。

猜你喜欢

转载自www.cnblogs.com/liuxu2019/p/12114374.html