path
函数的定义为:path(route,view,name=None,kwargs=None)
。
以下对这几个参数进行讲解。
-
route
参数:url
的匹配规则。这个参数中可以指定url
中需要传递的参数,比如在访问文章详情页的时候,可以传递一个id
。传递参数是通过<>
尖括号来进行指定的。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id
都是int
类型,那么可以这样写<int:id>
,以后匹配的时候,就只会匹配到id
为int
类型的url
,而不会匹配其他的url
,并且在视图函数中获取这个参数的时候,就已经被转换成一个int
类型了。其中还有几种常用的类型:- str:非空的字符串类型。默认的转换器。但是不能包含斜杠。
- int:匹配任意的零或者正数的整形。到视图函数中就是一个int类型。
- slug:由英文中的横杠
-
,或者下划线_
连接英文字符或者数字而成的字符串。 - uuid:匹配
uuid
字符串。 - path:匹配非空的英文字符串,可以包含斜杠。
-
view
参数:可以为一个视图函数或者是类视图.as_view()
或者是django.urls.include()
函数的返回值。 -
name
参数:这个参数是给这个url
取个名字的,这在项目比较大,url
比较多的时候用处很大。
事例slug:
path('book/slug/<slug:book_id>',views.book_detail_path)
http://127.0.0.1:8000/book/slug/1-2_3
访问可以解析横杆和下划线,其他的符号不能解析
事例path:
path('book/path/<path:book_id>',views.book_detail_path),
http://127.0.0.1:8000/book/path/11/22
相当于把book/path后面的path全部解析为了book_id不管后面还有不有/
事例name:
给这个url
取个名字
path('book/slug/<slug:book_id>',views.book_detail_path,name="book_slug"),
path('book/path/<path:book_id>',views.book_detail_path,name="book_path"),