stark组件前戏(3)之django路由分发的本质include

django路由分发的三种方式

 

方式一:

from django.urls import re_path, include

urlpatterns = [
    re_path(r'^web/', include('app01:urls')),
]
include的返回值:
    return (urlconf_module, app_name, namespace)

 

方式二:

# include函数主要返回有三个元素的一个元组。

# app01/urls.py
urlpatterns = [
    re_path(r'^index/', views.index),
    re_path(r'^home/', views.index),
]

# 主urls配置文件
from django.urls import re_path
from app01 import urls

urlpatterns = [
    re_path(r'^web/', (urls, app_name, namespace)),  # 第一个参数是urls文件对象,通过此对象可以获取urls.patterns获取分发的路由。
]

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

 

方式三:

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

 

 

posted @ 2019-03-19 16:17  梁少华  阅读(281)  评论(0编辑  收藏  举报