一、定义
指url与后端视图之间的一一映射关系
二、匹配原则
需要在全局路由文件(urls.py),urlpatterns列表中添加路由条目
- urlpatterns列表条目总数就是路由总数
- urlpatterns列表从上到下进行匹配(路由寻址)
- urlpatterns列表中条目一旦匹配成功,就会终止往下匹配
- urlpatterns列表中条目匹配不成功,就会一直往下匹配
- 如果全部条目都匹配不成功,那么会抛出404异常(404页面)
urlpatterns = [
path('test/', include('run_test.urls')),
path('cookies/', include('cookie.urls')),
path('api/', include('api_test.urls')),
path('docs/', include_docs_urls(title='django接口文档', description='后台服务接口')),
]
三、path函数
1)用于定义路由条目
2)第一个参数为url路径参数(字符串),路径最前面不添加/,路径最后面需要添加/
3)第二个参数为视图函数或者类视图,如果添加的视图函数,无需使用()调用
4)如果第二个参数为include,那么会继续进入到子路由中匹配,子路由的匹配规则与全局路由匹配规则一致
5)第一个参数可以使用类型转化器 <类型转化器:参数名称>
默认的类型转化器:int、str、slug、uuid
参数名称,在调用视图时,会自动传递给视图函数,需要使用同名的参数接收
from django.urls import path # 字符串路由
from django.urls import re_path # 正则路由,会把url地址看成一个正则模式与客户端的请求url地址进行正则匹配
urlpatterns = [
# 路由传参
path('projects/<int:pk>/', views.get_projects),
# re_path注册路由,正则匹配,其中(?P<pk>\w{3})意思是命名一个名字为pk的组,匹配规则符合后面的\w{3},这是正则的组合使用:(?P<name>group)
re_path(r'^projects/(?P<pk>\w{3})/$', views.get_projects),
path('project/put/', views.index),
path('project/', include('projects.urls')),
]
四、子应用的urls
urlpatterns = [
# 普通函数直接引用函数
path('project/put/', views.index),
# 定义类视图的路由条目
# a.类视图.as_view()
path('projects/<int:pk>/', views.ProjectsView.as_view()),
]