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)
]
posted on 2019-05-17 20:06  江湖乄夜雨  阅读(138)  评论(0编辑  收藏  举报