URL路由的机制

1 Django的URL路由配置

  1. 路由是关联URL及其处理函数关系的过程。
    创建的settings.py中通过ROOT_URLCONF变量指定全局路由文件名称,一般路由名称与工程名称相同。
  2. Django使用urlpatterns变量名来添加路由,改变量是列表类型,一般有pathre_path组成。

2 Django的URL路由流程

注意:Django的路由不考虑HTTP请求方式,仅根据URL进行路由,即只要路由路径相同,无论POST、GET等哪种请求方式都指向同一个操作函数。

3 path(route, view, kwargs=None, name)

  • url:表示url或者url模式,Django定义的url转换语法
  • view:处理(视图)函数的名称,包含include函数
  • kwargs:关键字参数,向处理函数提供额外的参数,以字典的形式表示
  • name:给path确定一个具体的名字

3.1 route的url格式转换

类型 说明 示例
精确字符串格式 常规的路径结构。 dir1/dir2
Django转换格式 通过不同参数控制路径,可以将路径保存。 dir1/<str:name>
正则表达式 通过正则表达式控制路径。 dir1/(?P<dir>[0-9]{1}
1) 精确字符串格式
  1. 适合静态单一的路径;
  2. 一个url匹配一个路径;
  3. url不用以/开头,但是要用/结尾;
2) Django转换格式
  1. 一个url模板,匹配一批url的同时,能够获得一批变量名作为参数。
  2. 常用形式,目的是通过url进行参数传递和获取。
  3. 采用<类型:变量名>的形式获取参数。
3)正则表达式

使用re_path函数,两种具体形式:

  • 简单的(pattern),不提取参数:path/([0-9]{4})/
  • 命名模式的(pattern),提取参数,统一为str类型:path/?P<name>[0-9]{4}

3.2 view的使用

  1. 处理函数:views.py处理函数,是url 的最终归宿。
    2)include处理函数:include(other.urls) 包含其他文件的url路径。有两重作用:
    ① 附加本地路由。
    ② 路径去重。

    为了避免系统找不到url,可以进行如下设置:
urlpatterns = [
path('',<根目录路径>)
re_path('^$',<跟目录路径>)
# 二选一即可