03-路由控制2——分发
03-路由控制2——分发
分发其实就是一个程序的“解耦”————将不同应用的路由写在本应用里面。
在“03-简单实例+有名分组”的前提下
(1)在app01中建立一个url.py文件(文件名随便取)
(2)在全局的urls.py文件中
#引入include
from django.urls import path,re_path,include
#在urlpatterns列表中加下面这段“分发”的代码:
#写法一:
#如果这样写的话,我们在访问的时候是这样的:http://127.0.0.1:8000/app01/login/
#也就是说,想要访问app01的内容 http://127.0.0.1:8000/app01/ 是必不可少的
#注意这里app01后面的'/'必须得加
re_path(r'app01/',include('app01.url')
#写法二:
#但是如果我们这样写,访问app01里的代码就不用加app01了:http://127.0.0.1:8000/login/
#注意这里^后面不加‘/’
re_path(r'^',include('app01.url'))
app01中新建的url.py文件的内容如下
#将之前全局的有关app01里面的views.py文件的函数的操作都放到app01里的url.py文件中:
from django.urls import path,re_path
from app01 import views
urlpatterns = [
path('login/',views.login),
#路由配置————哪一个路径由哪一个视图函数去处理(这里是新的内容)
#调用的时候会自动传一个request参数,如special_case_2003(request)
re_path(r'^articles/2003$',views.special_care_2003),
#下面的效果跟上面一样,只不过是正则表达式的匹配方式不同,需要的函数还是写在app01的views.py文件中
# 注意这一个,有分组的话需要在views.py文件的相应的函数中多加一个参数:
re_path(r'^articles/([0-9]{4})/$',views.year_archive),
#有两个分组需要在views.py的相应的函数中多加两个参数:
re_path(r'^articles/([0-9]{4})/([0-9]{2})$',views.month_archive),
#有名分组
re_path(r'^articles/(?P<str_2>[a-z]{2})/(?P<str_1>[a-z]{1})/$',views.str_name1)
]