1、导入模块
from django.urls import path, include, re_path
路由系统过程:
1)网页输入网址,提交请求
2)找到settings.py中的Root_URLCONF, 进入路由系统中按照顺序找匹配的
3)找到了,就调用与该匹配的url映射的视图函数,并传递参数request以及其它 HttpRequest对象request
4)视图函数处理,返回HttpResponse给浏览器展示(浏览器解析网页)
5)没有找到匹配的url就报错
2、一般静态配置 article/2017/
path(route,views.函数名,函数的参数,该url模式的别名)
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘hello/‘,views.hello), # 前面版本中表示空的是 ‘^$‘,新版本直接 ‘‘ 末尾/一定要,hello不行,一定是hello/
path(‘time/‘,views.current_time),
]
3、动态配置 <类型:变量名>,articles/<int:year>/
path(‘article/<int:year>/‘,views.book)
变量名作为参数传递给视图函数;类型有int, str,slug, Uuid, path
4、正则匹配 re_path() (?p<year>[0-9]{4})
使用re_path()函数;表达的全部是str格式,不能是其他类型。
两种形式:不提取参数,比如re_path(articles/([0-9]{4}/,表示四位数字,每一个数字都是0到9的任意数字;提取参数,命名形式(?P<name>pattern),比如re_path(articles/(?P<year>[0-9]{4})/,将正则表达式提取的四位数字,每一个数字都是0到9的任意数字命名为year,
5、include用法
可以减少重复的匹配,
Urlpatterns = [
path(‘<page_slug>-<page_id>/’,include([
path(‘history/’,views.history),
path(‘edit/’,views.edit),
])]
还可以实现url的映射分发
from django.urls import path,include
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘ant_test/‘,include(‘ant_test.urls‘))
]
ant_test为app名