(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.hqwc.cn/news/170752.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用swagger-typescript-api

引言 前后端分离大致是这样的 后端&#xff1a;控制层 / 业务层 / 数据操作层前端&#xff1a;控制层 / 视图层 前后端的控制层&#xff0c;实际上就是前后端接口的对接 前后端分离&#xff0c;实现了更好地解耦合&#xff0c;但也引入了接口对接的过程&#xff0c;这个过程…

Clickhouse学习笔记(10)—— 查询优化

单表查询 Prewhere 替代 where prewhere与where相比&#xff0c;在过滤数据的时候会首先读取指定的列数据&#xff0c;来判断数据过滤&#xff0c;等待数据过滤之后再读取 select 声明的列字段来补全其余属性 简单来说就是先过滤再查询&#xff0c;而where过滤是先查询出对应…

设置专属链接的这些作用你知道吗?

专属链接作为一种个性化的链接&#xff0c;用于为特定的客户或群体提供定制化的体验或服务。对于企业来说&#xff0c;每个渠道或者每个客户都能拥有一个专属链接是无比便利的事情。企业可以将这个链接嵌入到各种宣传物料中&#xff0c;让客户通过输入链接即可进入与客服的交流…

挑战100天 AI In LeetCode Day08(热题+面试经典150题)

挑战100天 AI In LeetCode Day08&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-102.1 题目2.2 题解 三、面试经典 150 题-103.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

upload-labs关卡6(基于黑名单的大小写绕过)通关思路

文章目录 前言一、回顾靶场第五关二、靶场第六关需要了解的知识点1、window系统大小写不敏感2、linux系统大小写敏感 三、靶场第六关通关思路1.看源代码2.通过bp进行大小写绕过 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场…

【SpringBoot】SpringBoot自动配置底层源码解析

概述 EnableAutoConfiguration源码解析SpringBoot常用条件注解源码解析SpringBoot之Mybatis自动配置源码解析SpringBoot之AOP自动配置源码解析SpringBoot Jar包启动过程源码解析 DeferredImportSelector接口 DeferredImportSelector和ImportSelector的区别在于&#xff1a; …

海康Visionmaster-通讯管理:使用 Modbus TCP 通讯 协议与流程交互

使用 Modbus TCP 通讯协议与视觉通讯&#xff0c;当地址为 0000 的保持型寄存器(4x 寄存器)变为 1 时&#xff0c;触发视觉流程执行一次&#xff0c;同时视觉将地址为 0000 的寄存器复位&#xff08;也即写为 0&#xff09;&#xff0c;视觉流程执行完成后&#xff0c;将结果数…

更安全的ssh协议与Gui图形化界面使用

目录 前言&#xff1a; 一.Gui图形化界面的使用 二.ssh协议 SSH的主要作用包括&#xff1a; 相比其他网络协议&#xff0c;SSH的优势包括&#xff1a; 三.idea集成Git 前言&#xff1a; 上一篇讲解了git的命令用法以及https协议&#xff0c;但是这个协议放在做团队项目的…

win7纯净版没有网卡驱动怎么办(msdn重装的系统)

当电脑重新安装Windows7系统之后&#xff0c;发现无法连接网络的情况&#xff0c;可以找一台能正常上网使用的电脑&#xff0c;打开浏览器软件&#xff0c;搜索“360驱动大师”&#xff0c;下载360驱动大师网卡版到U盘&#xff0c;然后拷贝到自己的win7电脑上安装网卡驱动&…

Leetcode—67.二进制求和【简单】

2023每日刷题&#xff08;二十八&#xff09; Leetcode—67.二进制求和 实现代码 void reverse(char *a, int len) {for(int i 0; i < len / 2; i) {char tmp a[i];a[i] a[len - 1 - i];a[len - 1 - i] tmp;} }char* addBinary(char* a, char* b) {int len1 strlen(a…

Hosts File Editor 实用工具

我一般手工编辑hosts文件&#xff0c;我想给hosts文件加一个开关&#xff0c;本想自己实现&#xff0c;但是忽然发现微软已经提供了官方的解决方案&#xff0c;感觉有能人。 对文件的行的修改被抽象成了一个开关。腻害&#xff01;&#xff01;&#xff01;

STM32独立看门狗(IWDG)溢出时间计算

什么是IWDG&#xff1f; 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动&#xff0c;即使主时钟发生故障它也仍然有效。 IWDG最适合应用于那些需要看门狗作为一个在主程序之外&#xff0c;能够完全独立工作&#xff0c;并且对时间精度要求较低的场合。 从上图我们可以看出IWDG的时…