(11.13 知识总结(路由层)

  一、路由层

   1.1路由匹配

        1.1.1 什么是路由?
  • 路由可以看成是跟在 ip 和 port 之后的地址
          1.1.2  url( ) 方法

# 示例
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login_func),
    url(r'^register/$', views.register_func),
]

  • url( ) 方法的第一个参数其实是正则表达式, 一旦第一个参数匹配到了内容直接结束匹配, 并调用对应的视图函数

    注:不需要在路由前面添加反斜杠 "/", 因为每个 url 自带
           建议在正则表达式之前添加原生字符 "r"
           每个由正则匹配成功并通过分组捕获的参数都会作为一个普通的Python字符串传递给视图函数
           如果路由结尾没有"/", 在第一次正则匹配机制没有匹配到想要的内容时, 会在匹配字符后加一个"/", 然后Django内部重定向在匹配一次
 

  2、分组命名匹配

    1.2.1 无名分组
  • rl( ) 方法中第一个参数正则表达式分组 : 给正则表达式前后加一个小括号

  • 会将括号内正则表达式匹配到的内容当做位置参数传递给后边的视图函数

  • get请求的第一种方式:
    http://127.0.0.1:8000/test/?a=1&b=2
    get请求的第二种方式:
    http://127.0.0.1:8000/test/123/11

   1.2.2 有名分组
  • 将正则表达式分组捕获到的内容定义一个名字
  • 会将括号内正则表达式匹配到的内容当做关键字参数传递给后面的视图函数
  •  

    url(r'^login/$', views.login_func)

    # 有名分组
    url(r'^login/(?P<id>\d+)/$', views.login_func)
    # 视图函数
    def login_func(request,**kwargs):
        print(kwargs)
        return Httpresponse(args)
     

1.2.3  有名和无名是否能够混合使用
  • 不能结合使用

url(r'^login/(\d+)/(?P<id>\d+)/$', views.login_func)
# 官方说不能混着用, 混着用只能取到有名分组捕获的值
# 只要不混着用,有名分组和无名分组支持多个相同类型的传参

  • 可以单个重复使用

url(r'^login/(\d+)/(\d+)/$', views.login_func)
url(r'^login/(?P<id>\d+)/(?P<id>\d+)/$', views.login_func)

3、 反向解析

1.3.1   .什么是反向解析?
  • 反向解析就是通过一些方法得到一个结果, 该结果可以直接访问对应的 url 并触发视图函数
1.3.2  反向解析的作用
  • 在使用一个 Django 项目时, 我们经常需要将一个 url 嵌入到生成的内容中去, 如果将这些 url 固定写死, 那么可扩展性很差, 并且一定程度上会产生过期的 url
  • 使用反向解析就是当路由频繁变化的时候, 让 html 界面上的连接地址做到动态解析
1.3.3  如何使用反向解析
  • 给路由与视图函数对应关系添加一个别名 (名字由自己指定, 只要不冲突即可)
  • # 路由层
    url(r'^login/$', views.login_func,name='login_name')
     
1.3.4  无名有名分组反向解析
       1.无名分组反向解析url(r'^v1/v2/v3/home/(\d+)/(\d+)/$', views.home, name='home')

# 后端解析
res=reverse('home', args=(123, 11)) # /v1/v2/v3/home/1
print(res)

# 前端解析
<a href="{% url 'home' 1 123 %}">点我看美女</a>

4、  路由分发

Django的全局路由文件是urls.py这个文件
随着项目的复杂程度越来越来越大,路由肯定也是越来越多,路由文件就会增加很多的路由地址,就会导致路由文件很混乱,不好管理,也不够清晰,我们可以把总路由文件进行拆分,拆分到各个应用下面去,每一个应用都可以有自己的路由文件

# 路由分发之后,总路由文件就不在作为地址匹配了,只是为了分发而已
# 路由的分发
# url(r'^app01/', include(app01_urls)),
# url(r'^app02/', include(app02_urls)),
# 第二种方式
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),

"""分发的路由第一个参数最后一个不要加 $ """

5. 名称空间(了解)

    1.5.1 为什么使用名称空间

       当多个应用设置了相同的别名, 在反向解析的时候前面路由会被后面的路由覆盖, 那么就无法触发前面路由对应的视图函数, 正常情况下, 反向解析是无法自动识别前缀的, 为了避免这种错误, 引入了名称空间.

6.伪静态的概念(了解)

  • 目的是为了更好的被搜索引擎收录以及seo查询几率而通过一定的规则, 把动态页面的地址转换成以 htm 或 html 结尾的地址, 看起来是静态的, 实际是依然是动态页面
  • 比如博客园的文章地址结尾就是 .html, 但我们是可以对文章内容进行修改的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/142392.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【异步并发编程】使用aiohttp构建Web应用程序

文章目录 1. 写在前面1. 什么是aiohttp&#xff1f;1.1. 什么是异步编程&#xff1f; 2. 安装aiohttp3. 异步HTTP服务器4. 异步请求5. aiohttp REST实例 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力…

iOS:何为空指针和野指针

一&#xff1a;什么是空指针和野指针 1、空指针 ①.没有存储任何内存地址的指针就成为空指针&#xff08;NULL指针&#xff09; ②.空指针就是被赋值为0的指针&#xff0c;在没有被具体初始化之前&#xff0c;其值为0. //以下都是空指针&#xff0c;eg: Person *p1 NULL; …

Linux上C++通过LDAP协议使用kerberos认证AES加密连接到AD服务器

一.前言 记录自己在实现这个流程遇到的各种问题&#xff0c;因为我也是看了许多优质的文章以及组内大佬的帮助下才弄成的&#xff0c;这里推荐一个大佬的文章&#xff0c;写的非常优秀&#xff0c;比我这篇文章写得好得很多&#xff0c;最后我也是看这个大佬的代码最终才实现的…

一行JavaScrip可以做什么?

说在前面 JavaScript 提供了许多方便的方法和操作符来简化常见的任务&#xff0c;使得编程变得更加高效和便捷。无论是数学计算、字符串处理还是数据操作&#xff0c;JavaScript 都能帮助我们以简洁的方式实现所需功能。 代码 1、生成指定范围内的随机整数 const randomInt …

部分背包问题【贪心算法】

部分背包问题是一种经典的贪心问题&#xff0c;物品可以取一部分&#xff0c;也就是可以随意拆分的物品。 算法思路&#xff1a; 用列表保存每个物品的价值及总重量、平均价值&#xff08;性价比&#xff09;。输入数据同时计算每种物品的平均价值。使用自定义的compare函数以…

2023亚太杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

苹果独占鳌头,国产手机围攻,双十一“照妖镜”显露谁有真实力

随着双十一购物节的结束&#xff0c;电商平台也给出了各手机品牌的销量数据&#xff0c;苹果毫无疑问成为双十一的赢家&#xff0c;不过两家国产手机品牌也显露了他们的实力&#xff0c;已具有与苹果一战之力。 与去年双十一和今年618类似&#xff0c;苹果仍然占据热销榜前列&a…

信驰达科技加入车联网联盟(CCC),推进数字钥匙发展与应用

CCC)的会员。 图 1 深圳信驰达正式成为车联网联盟(CCC)会员 车联网联盟(CCC)是一个跨行业组织&#xff0c;致力于推动智能手机与汽车连接解决方案的技术发展。CCC涵盖了全球汽车和智能手机行业的大部分企业&#xff0c;拥有150多家成员公司。CCC成员公司包括智能手机和汽车制造…

TLP超线程技术

在实现IPL指令级并行的同时实现TLP(Thread Level Parallelism)线程级并行实现多线程有两种主要的方法超线程即同时多线程&#xff0c;在单个处理器或单个核中设置了两套线程状态部件&#xff0c;共享高速缓存和功能部件当两个线程同时需要某个资源时&#xff0c;其中一个线程必…

Mac 本地部署thinkphp8【配置环境】

PHP开发工具 我这里选择的是VSCode,里面安装PHP插件 把thinkphp的项目放到 切换到phpenv ![在这里插入图片描述](https://img-blog.csdnimg.cn/a15cc442fab74754ad86d74f6d9942e5.png URL重写如果不改&#xff0c;在请求的时候地址是这样的‘http://tp.com/index.php…

Prim算法(C++)

目录 介绍&#xff1a; 代码&#xff1a; 结果&#xff1a; 介绍&#xff1a; Prim算法是一种用于解决最小生成树问题的贪心算法。该算法的主要思想是从一个顶点开始&#xff0c;不断向图中添加边&#xff0c;直到构成一棵包含所有顶点的生成树&#xff0c;使得树的边权之…

安全认证框架Shrio学习,入门到深度学习,SpringBoot整合Shiro小案例,含代码

权限概述 什么是权限 什么是权限 权限管理&#xff0c;一般指根据系统设置的安全策略或者安全规则&#xff0c;用户可以访问而且只能访问自己被授权的资源&#xff0c;不多不少。权限管理几乎出现在任何系统里面&#xff0c;只要有用户和密码的系统。 权限管理再系统中一般分…

麒麟信安:助力医疗行业操作系统自主创新,提升可靠性与安全性

应用场景 湖南省康复医院是省卫生健康委直属公立三级康复医院&#xff0c;也是全省唯一一所集预防、医疗、康复、科研、教学、健康管理为一体的省级三级公立康复医院。 湖南省康复医院使用的医慧管平台由湖南蓝途方鼎科技有限公司开发&#xff0c;利用互联网技术&#xff0c;…

卫星通信和800MHz双管齐下,中国电信对中国移动发起新挑战

依靠国内某科技企业的宣传&#xff0c;卫星通信大热&#xff0c;中国电信也由此成为受益者&#xff0c;日前中国电信又大举招标25万座800MHz 5G基站&#xff0c;显示出中国电信积极以技术优势挑战中国移动。 一、中国电信急起直追 自从4G时代以来&#xff0c;中国电信就在国内通…

EXTI (2)

增强版实验简介 EXTI5和EXTI9共享一个中断源 下面的类似 EXTI0到4各自拥有一个中断源 改变引脚 PA0和PA1改变为PA5 和PA6 EXTI的重映射 之前是把PA0映射到EXTI0 PA1映射到EXTI1上 现在是要把PA5和PA6分别映射到EXTI5和6上 EXTI进行初始化 NVIC初始化 编写中断函数 因为EXTI…

Apktool反编译和重新打包

Apktool 使用 1&#xff1a;linux安装apktool 可以直接查询下version apktool -v 如果未安装&#xff0c;会得到如下结果&#xff1a; Command apktool not found, but can be installed with:sudo snap install apktool # version 2.7.0, or sudo apt install apktool …

SSH全能终端工具mobaXterm(远程工具)使用教程

参考文章&#xff1a;SSH全能终端工具MobaXterm Personal v23.0 完全汉化绿色版 参考文章&#xff1a;MobaXterm 23终端控制软件 文章目录 SSH全能终端工具mobaXterm使用教程目录引言mobaXterm概述安装与配置下载mobaXterm安装过程基础设置 SSH连接创建SSH会话SSH命令行操作文…

Linux 源码包安装

SRPM 包&#xff0c;比 RPM 包多了一个“S”&#xff0c;是“Source”的首字母&#xff0c;所以 SRPM 可直译为“源代码形式的 RPM 包”。也就是说&#xff0c;SRPM 包中不再是经过编译的二进制文件&#xff0c;都是源代码文件。可以这样理解&#xff0c;SRPM 包是软件以源码形…

力扣周赛371复盘(总结与进步)

比赛结果 第一题 2932. 找出强数对的最大异或值 I - 力扣&#xff08;LeetCode&#xff09; 这个由于是简单题&#xff0c;暴力for循环即可 通过结果如下&#xff1a; class Solution {public int maximumStrongPairXor(int[] nums) {int ans0;for(int i 0;i<nums.length;…

Python 日志记录器logging 百科全书 之 日志回滚

Python 日志记录器logging 百科全书 之 日志回滚 前言 在之前的文章中&#xff0c;我们学习了关于Python日志记录的基础配置。 本文将深入探讨Python中的日志回滚机制&#xff0c;这是一种高效管理日志文件的方法&#xff0c;特别适用于长时间运行或高流量的应用。 知识点&…
最新文章