path定义
path函数的定义为:
path(route,view,name=None,kwargs=None)
可以查看官方文档 → 官方文档,下面是取自官方文档关于path的参数
函数 path() 具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。
path() 参数: route
route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/。
path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
path() 参数: kwargs
任意个关键字参数可以作为一个字典传递给目标视图函数。
path() 参数: name
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
route几种常用的类型
- str:非空的字符串类型。默认的转换器。但是不能包含斜杠。
- int:匹配任意的零或者正数的整形。到视图函数中就是一个int类型。
- slug:由英文中的横杠-,或者下划线_连接英文字符或者数字而成的字符串。
- uuid:匹配uuid字符串。
- path:匹配非空的英文字符串,可以包含斜杠。
re_path定义:
它和path是相同的,但是它的第一个参数传递的是一个
正则表达式
#和path相同需要导入re_path
from django.urls import path, re_path
from . import views
urlpatterns = [
path('canshu/2003/', views.special_case_2003),
#使用r包裹正则表达式,它是一个原生字符串,可以避免python这一层面转移(不是非要不可)
re_path(r'canshu/(?P<year>[0-9]{4})/', views.year_archive),
]