Django之路由层

目录

一、路由层

二、无名分组

三、有名分组

四、反向分析

1. 无名分组反向解析

2. 有名分组反向分析

五、路由分发

六、名称空间(了解)

七、伪静态的概念(了解)

八、虚拟环境(了解)

九、Django1和Django2的区别

1. 路由文件

2. 创建表关系


一、路由层

  • Django1中
url(r'^test/$', views.test),
url(r'testadd', views.testadd),
# 首页的地址
url(r'^$', views.home),
  • Django2中
path('admin/', admin.site.urls), # 精准匹配,不支持正则表达式
path('test/', views.test), # 精准匹配,不支持正则表达式
re_path(r'^test/$', views.test) # url(r'^test/$', views.test),

注:url方法的第一个参数支持的是正则表达式。

二、无名分组

无名分组就是把正则中小括号里的匹配到的内容以位置参数的形式传递给视图函数。

url(r'^test/(\d+)$', views.test),

补充:

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

三、有名分组

有名分组就是把正则中小括号里的匹配到的内容以关键字参数的形式传递给视图函数。

url(r'^test/(?P<year>\d+)/(?P<month>\d+)$', views.test),

注:有名和无名是否能够混合使用

不要混合使用,要么无名,要么有名,但是,无名、有名可以使用多次。

url(r'^test/(?P<year>\d+)/(\d+)$', views.test),

无名有名分组的使用可以有了接收参数的方法

四、反向分析

反向分析就是每一个路由都可以起一个别名,通过Django提供的一些方法去解析这个别名,得到一个别名对应的路由。

url(r'^v1/v2/v3/home$', views.home, name='home'),
  • 后端反向解析
'''反向解析'''
res=reverse('home') # /v1/v2/v3/home
print(res)
  • 前端反向分析
<a href="{% url 'home' %}">点我看美女</a>

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>

2. 有名分组反向分析

url(r'^v1/v2/v3/home/(?P<year>\d+)/(?P<mon>\d+)/$', views.home, name='home')
  • 后端分析
res=reverse('home', args=(123, 11)) # /v1/v2/v3/home/1
res=reverse('home', kwargs={'year':123, 'mon':1}) # /v1/v2/v3/home/1
print(res)
  • 前端分析
<a href="{% url 'home' year=1 mon=123 %}">点我看美女</a>

五、路由分发

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')),

六、名称空间(了解)

  • 第二种方法
url(r'^app01/', include('app01.urls', namespace='app01')),
url(r'^app02/', include('app02.urls', namespace='app02')),
  • 解析
res=reverse('app01:login', args=(11,22)) # /v1/v2/v3/home/1
res=reverse('app02:login', args=(11,22)) # /v1/v2/v3/home/1

七、伪静态的概念(了解)

伪静态:其实就是把动态页面改成静态页面

动态页面:它不是在html页面中写死的,它是根据后端的数据变化而变化

  • 我们的页面上的数据是从数据库查询出来都是可以是动态页面

静态页面:

  • html
  • css

案例:https://www.cnblogs.com/bigsai/p/17827160.html  -------》这个就是伪装之后的页面

伪装的目的:为了更好的被各大搜索引擎抓大,静态页面是最容易被抓到的,有个别的网站就会做伪装,seo

  • seo:优化关键词被容易搜索到
  • sem: 广告(RMB)

怎么样去伪装

url(r'^v1/v2/test.html/$', views.test)

八、虚拟环境(了解)

以后针对于每一个独立的项目,都会去配置一个解释器,多个项目能不能使用同一个解释器,原则上是能的,我们会针对于不同的项目单独的配置一个新的解释器。

每一个解释器只装针对于这个项目的模块
我们会使用虚拟环境:类似于是一个纯净版本的Python解释器,虚拟环境你是需要自己下载的,下载的时候,使用的是哪个Python解释器版本,下载下来的就是这个版本的解释器,纯净版的。

注:不要频繁的创建虚拟环境,过多的虚拟环境肯定会占用资源。

九、Django1和Django2的区别

1. 路由文件

  • Django1.x中使用的是url:支持正则
  • Django2.x中使用的是path(不支持正则:精准匹配)和re_path(url):支持正则path,但是它只支持五种转换器。

Django默认支持以下5个转化器:

  • str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
  • int,匹配正整数,包含0。
  • slug,匹配字母、数字以及横杠、下划线组成的字符串。
  • uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
  • path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)

注册自定义转化器

对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点:

  • regex 类属性,字符串类型
  • to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。
  • to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。

2. 创建表关系

  • Django2中必须指定参数:on_delete:
  • Djanxo1中不用指定:级联更新

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

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

相关文章

Django(复习篇)

项目创建 1. 虚拟环境 python -m venv my_env ​ cd my_env activate/deactivate ​ pip install django ​2. 项目和app创建 cd mypros django-admin startproject Pro1 django-admin startapp app1 ​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 DIRS: [os.pat…

测试用例之翻页功能

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

python socketserver模块开启ssl双向认证

server端代码如下 import socketserver import ssl# 需要校验客户端 ssl_context ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) # 发给客户端 ssl_context.load_cert_chain(certfile"./server.crt", keyfile"./server.key") # 信任库 ssl_conte…

LabVIEW中NIPackageManager功能介绍

LabVIEW中PackageManager功能介绍 使用NIPackage Manager可安装、更新、修复和删除NI软件。 安装NI软件 使用PackageManager浏览和安装NI软件。 1. 在浏览产品选项卡上&#xff0c;单击产品类别以显示该类别中的可用产品。 2. 选择要安装的产品&#xff0c;然后单击…

OpenCV:图像矫正与仿射变换

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

Netty--文件编程

3. 文件编程 3.1 FileChannel ⚠️ FileChannel 工作模式 FileChannel 只能工作在阻塞模式下 获取 不能直接打开 FileChannel&#xff0c;必须通过 FileInputStream、FileOutputStream 或者 RandomAccessFile 来获取 FileChannel&#xff0c;它们都有 getChannel 方法 通过…

ablation study

文章目录 ablation study1、消融实验思想是什么&#xff1f;2、消融实验意义3、消融实验应用场景举例 ablation study 1、消融实验思想是什么&#xff1f; “消融实验”&#xff08;ablation study&#xff09;通常指的是通过逐步移除系统的一部分来评估该系统的贡献。这种方法…

Java设计模式-创建型模式-建造者模式

建造者模式 建造者模式案例与工厂模式的区别&#xff1a;Builder 注解 建造者模式 建造者模式是将一个复杂对象的构件与表示分离&#xff0c;使得同样的构件过程可以创建不同的表示。 建造者模式将内部构件的创建和组装分割开&#xff0c;一般使用链式编程&#xff0c;代码整洁…

讲座录播 | 邹磊教授:图数据库的概念和应用

2023年10月16日 由中国计算机学会主办的 “CCF Talk”直播间 进行了题目为 术语解读:“图计算”的内涵与应用 主题直播活动 讲座吸引7708人观看 图作为一种灵活表达复杂关联关系的数据结构&#xff0c;目前已广泛地应用于社会治理、医疗健康、电网分析、计算材料、计算育…

在国内使用 FOFA 查找免费无需注册无需验证的 ChatGPT Web 站点

这个文章不知道为什么火了。出于网络安全的原因&#xff0c;我在这里提醒大家&#xff1a; 本文提供的是一种白嫖 ChatGPT 的方法&#xff0c;是通过查找互联网上对外来访问者不设防的 ChatGPT Web 站点实现的。但这并不代表这些站点的主人就一定欢迎陌生人该网站的访问并使用该…

【Qt之QStandardItemModel类】介绍

描述 QStandardItemModel类提供了一个通用的模型&#xff0c;用于存储自定义数据。QStandardItemModel可以用作Qt标准数据类型的存储库。它是 Model/View类 之一&#xff0c;是 Qt的model/view框架 的一部分。 QStandardItemModel提 供了一种基于项目的传统方法来处理模型。 Q…

【CSDN 每日一练 ★☆☆】【数组】最大子序和

【CSDN 每日一练 ★☆☆】【数组】最大子序和 数组 题目 给定一个整数数组 nums&#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1…

CSRF 漏洞详解

CSRF 漏洞详解 文章目录 CSRF 漏洞详解漏洞描述漏洞原理漏洞场景漏洞评级漏洞危害漏洞验证漏洞利用漏洞防御典型案例 漏洞描述 CSRF&#xff08;Cross-Site Request Forgery&#xff09;漏洞是一种Web应用程序安全漏洞&#xff0c;它允许攻击者利用受害者的已认证会话来执行未…

numpy常用方法总结

这里写自定义目录标题 前言具体函数&#xff1a;np.zeros()np.sum()np.reshape()np中的转置函数 前言 机器学习中会经常使用numpy下的函数&#xff0c;需要明确方法的功能及使用的注意事项&#xff0c;多练习&#xff0c;才能熟能生巧&#xff1b; 具体函数&#xff1a; np.…

【Transformer从零开始代码实现 pytoch版】(五)总架构类的实现

Transformer总架构 在实现完输入部分、编码器、解码器和输出部分之后&#xff0c;就可以封装各个部件为一个完整的实体类了。 【Transformer从零开始代码实现 pytoch版】&#xff08;一&#xff09;输入部件&#xff1a;embeddingpositionalEncoding 【Transformer从零开始代…

Spring boot 整合elasticsearch

文章目录 初始化RestClient 初始化RestClient 在elasticsearch提供的API中&#xff0c;与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中&#xff0c;必须先完成这个对象的初始化&#xff0c;建立与elasticsearch的连接。 分为三步&#xff1a; 1&#xf…

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片 Sub-1GHz&#xff0c;是指小于1GHz频率的统称。Sub-1GHz无线电频段应用的主要特点&#xff1a;&#xff08;1&#xff09;频率较低波长较长&#xff0c;传输距离远&#xff0c;穿透性强&#xff1b;&#xff0…

xinput1_3.dll丢失的详细解决步骤办法和比较,五种有效的解决办法

今天想和大家分享一个电脑中经常出现的问题——xinput1_3.dll丢失。这个文件丢失是一件常见的问题。不知道小伙伴们有没有遇到过这样的问题&#xff0c;如果你遇到这样的问题今天就教大家xinput1_3.dll丢失的详细解决步骤办法和比较&#xff0c;五种有效的解决办法。 一.xinput…

YOLOv5 分类模型的后处理

YOLOv5 分类模型的后处理 flyfish 简化源码测试 import torch import numpy as np from torchvision import transforms import torch.nn.functional as Fdata0 np.random.random((1, 7)) data0 np.round(data0,7) print(data0.shape) print(data0) data1 torch.from_n…

力扣labuladong一刷day7共3题

力扣labuladong一刷day7共3题 文章目录 力扣labuladong一刷day7共3题一、216. 组合总和 III二、111. 二叉树的最小深度三、752. 打开转盘锁 一、216. 组合总和 III 题目链接&#xff1a;https://leetcode.cn/problems/combination-sum-iii/ 思路&#xff1a;还是组合只是既有n…