具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。
上面介绍的path中,第一个参数route使用的是非正则表达式可以表示的普通路由路径。
要从URL捕获值,请使用尖括号。
捕获的值可以选择包括转换器类型。例如,用于 int:name捕获整数参数。如果未包含转换器/,则匹配除字符之外的任何字符串。
没有必要添加前导斜杠,因为每个URL都有。例如,它articles不是/articles。
默认情况下,以下路径转换器可用:
比如要匹配一个视图中的函数路由,该函数有两个形参:
views.py
def detail(request, book_id):
第一个request是默认的,那么路径自动匹配该函数的第二个形参,匹配格式:int:book_id,并返回0或正整数。
app.urls.py
# coding=utf-8 from django.urls import path from books import views from books.views import TestView urlpatterns = [ # 匹配首页 只能写成'' 不能写成'/' # path('/', views.index, name='index'), # 不能写成views.index() 这样会执行index函数 得到他的返回值 # 写成views.index 将函数地址值传递给django框架 他来帮我们调用index函数 path('', views.index, name='index'), # path中的route必须带/ path('login/', views.login, name='login'), # URLConf, path('<int:book_id>/', views.detail, name='book_id'), # 如果写死了 view中获取year 访问地址就要是 articles/2022/2022 # path('articles/2022/', views.special_case_2022), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/', views.slug_archive), path('articles/<int:year>/<int:month>/<str:title>/', views.title_archive), # 类视图 path('view_class/', TestView.as_view(), name='test') ]