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获取分发的路由。