今日内容概要
- django请求生命周期流程图
- django路由层
- 反向解析
今日内容详细
django请求生命周期流程图

| 学习流程 |
| 路由层、视图层、模板层、模型层、组件、BBS项目 |
django路由层
| 1.路由匹配 |
| django2.X及以上版本 path第一个参数写什么就匹配什么 |
| django1.X版本第一个参数是正则表达式 |
| 无论什么版本的django都自带加斜杠后缀的功能 也可以取消 |
| 配置文件中 APPEND_SLASH = False |
| |
| 2.转换器 |
| 正常情况下很多网站都会有很多相似的网址 如果我们每一个都单独开设路由不合理 |
| django2.X及以上版本路由的动态匹配是通过转换器(五种) |
| str:匹配除路径分隔符以外的任何非空字符串 |
| int:匹配0或者任意正整数 |
| slug:匹配任意一个由字母或数字组成的字符串 |
| uuid:匹配格式化后的UUID |
| path:能够匹配完整的URL路径 |
| ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容) |
| 转换器就是将对应位置匹配到的数据转换成固定的数据类型 |
| path('index/<str:info>/', views.index_func) |
| |
| |
| path('index/<str:info>/<int:id>/', views.index_func2) |
| |
| |
| 3.正则匹配 |
| django2.X及以上的版本有re_path 第一个参数是正则表达式 |
| 匹配的本质是只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功 会立刻停止路由层其他的匹配直接执行对应的视图函数 |
| re_path('test', views.test) |
| re_path('testadd', views.testadd) |
| 当用户输入ip:端口/testadd/那么只会匹配到test 并进入test视图函数 |
| re_path('test/', views.test) |
| 当用户输入ip:端口/test/iehoasjd依然能够匹配到所以还得改进 |
| re_path('^test/$', views.test) |
| django1.X路由匹配使用的是url() 功能与django2.X及以上的re_path()一致 |
| |
| 4.正则匹配的无名和有名分组 |
| 无名分组 |
| re_path('^test/(\d{4})/', views.test) |
| 正常情况下给正则加括号并不会影响查找但是在django中 |
| 会将括号内正则匹配到的内容当做位置参数传递给视图函数 |
| 有名分组 |
| re_path('^test/(?P<year>\d{4})/', views.test) |
| 会将括号内正则匹配到的内容当做关键字参数传递给视图函数 |
| 注意!!!上述的分组不能混合使用!!! |
反向解析
| 通过一个名字可以反向解析出一个结果 该结果可以访问到某个对应的路由 |
| |
| 基本使用 |
| 1.路由匹配关系起别名 |
| path('login', views.login, name='login_view') |
| 2.反向解析语法 |
| html页面上的模板语法 {% url 'login_view' %} |
| 后端语法 reverse('login_view') |
| |
| 动态路由的反向解析 |
| path('func1/<str:info>', views.func1_func, name='func1_view' |
| html页面上的模板语法 {% url 'func1_view' 'jason' %} |
| 后端语法 reverse('func1_view', args=('嘻嘻',)) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构