Django 一文看懂urls.py与views.py的联系

URL路由的机制

Created with Raphaël 2.2.0 url 定义、转换、传参、命名等操作 views

1 Django的URL路由配置

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

2 Django的URL路由流程

Created with Raphaël 2.2.0 Django查找全局urlpatterns变量 Django按照先后顺序,对URL逐一匹配urlpatterns的每个元素 找到第一个匹配时停止查找,根据匹配结果执行对应处理函数 寻找对应的处理函数 进行后续处理 进行错误处理 yes no

注意: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/
正则表达式 通过正则表达式控制路径。 dir1/(?P[0-9]{1}
1) 精确字符串格式
  1. 适合静态单一的路径;
  2. 一个url匹配一个路径;
  3. url不用以/开头,但是要用/结尾;
2) Django转换格式
  1. 一个url模板,匹配一批url的同时,能够获得一批变量名作为参数。
  2. 常用形式,目的是通过url进行参数传递和获取。
  3. 采用<类型:变量名>的形式获取参数。
    Django 一文看懂urls.py与views.py的联系_第1张图片
3)正则表达式

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

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

3.2 view的使用

  1. 处理函数:views.py处理函数,是url 的最终归宿。
    2)include处理函数:include(other.urls) 包含其他文件的url路径。有两重作用:
    ① 附加本地路由。
    ② 路径去重。
    Django 一文看懂urls.py与views.py的联系_第2张图片
    为了避免系统找不到url,可以进行如下设置:
urlpatterns = [
path('',<根目录路径>)
re_path('^$',<跟目录路径>)
# 二选一即可

你可能感兴趣的:(Django,60天创建个人网站,python,django,urls.py,views.py,Django,路由机制)