Django路由层之有名分组和无名分组、反向解析、路由分发、伪静态的概念、名称空间、虚拟环境、Django1和Django2的区别

【1】无名分组

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

 

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

        

get请求的第一种方式:

        http://127.0.0.1:8000/test/?a=1&b=2

get请求的第二种方式:

        http://127.0.0.1:8000/test/12/1

【2】有名分组

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

 

        

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

【3】有名分组和无名分组是否可以使用多次

有名分组和无名分组不要混合使用,要么全是有名分组,要么全是无名分组

 

有名分组和无名分组可以多次使用

 

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

【4】反向解析

反向解析的概念:

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

 

url(r'^v1/v2/home$',view.home,name='home')
        【4.1】后端反向解析

后端反向解析就是要使用reverse()方法

 

res = reverse('home')
print(res)'''home就是别名的名字'''
        【4.2】前端反向解析

前端反向解析就是使用 {%  %}

 

<a href"{% url 'home' %}"=>点击</a>
        【4.3】有名分组和无名分组的反向解析
                【4.3.1】无名分组的反向解析
url(r'v1/v2/home/(\d+)$',view.home,name='home')# 后端解析res = reverse('home',args=(12,))    # 解析出来的地址:v1/v1/home
print(res)# 前端解析<a href="{% url 'home' 1 %}">点击</a>
                【4.3.2】有名分组的反向解析
url(r'^v1/v2/home/(?P<year>\d+)/(?P<mon>\d+)/$',view.home,name='home')# 后端反向解析res = reverse('home',kwargs={year:1,mon:2})res = reverse('home' args=(1,2))'''args和kwargs都可以接收到参数'''print(res)# 前端的反向解析<a href={% url 'home' year=21 mon=3 %}>点击</a>

【5】路由分发

        【5.1】全局路由文件(主路由文件)

Django的全局路由文件就是urls.py

        【5.2】为什么要使用路由分发?

随着Django项目的浮渣程度越来越大,路由肯定也会越来越多,总路由文件中的路由地址就会越来越多。会导致总路由文件不好关系,不够清晰。路由分发可以很好的解决这个问题

        【5.3】如何使用路由分发

路由分发:就是在每个web应用的下面都分发一个路由(子路由)

 

注意:路由分发以后,总路文件就不作为地址匹配了,只是为了分发而已

 


路由分发:需要导入include方法

       

 from django.urls import path,include

  第一种方式:

        在总路由文件中导入每个web应用的子路由文件,不同的路由文件的名字可能存在重复的可能性,可以通过起别名的方式(as)进行区分

        

 from django.urls import path,includefrom app01 import urls as app01_urlsfrom app02 import urls as app02_urls# 路由分发url(r'^app01/',include(app01_urls)),url(r'^app02/',include(app02_urls)),

        

第二种方式:

        

url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app02.urls')),'''第二种方式可以不用导入w每个web应用的路由地址'''

        

注意:分发的路由第一个参数最好不要加$

 【6】名称空间

用于解决,在反向解析时,不同应用起的别名可能一致的问题。


                

        第一种方式:就在在反向解析时就注意下别名的定义

 

        第二种方式:

        

url(r'^app01/',include('app01.urls',namespace='app01')),
url(r'^app02/',include('app02.urls',namespace='app02')),'''解析'''res = reserve('app01:login',arg=(11,22))
res = reserve('app02:login',args=(11,222))

【7】伪静态的概念

        【7.1】静态文件和动态文件

动态文件:它是根据后端的数据变化而变化,不是在html页面中固定的,

                从数据库查询出来都是动态页面

                                       

                        

静态页面:在html文件内中写死了,不会变化。例:html,css等

        【7.2】伪装的作用

为了更好的被各大搜素引擎抓到。静态页面最容易被抓住,动态页面比较难抓

 

两种方式:

seo:优化关键字被容易搜索到

sem:广告

        【7.3】如何进行伪装

在路由文件的后缀中.html就行

 

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

【8】虚拟环境

针对每一个项目,都会去配置一个解释器,原则上多个项目可以使用同一个解释器

 

针对不同的项目单独配置一个新的解释器,每一个解释器只装针对这个项目的模块

  


虚拟环境就是纯净版本的python解释器。

虚拟环境需要自己下载,是哪个python解释器的版本,下载的就是这个版本的解释器

 

无必要的话不要频繁的创建虚拟环境,过多的虚拟环境会占用资源

【9】django1和django2的区别

1、路由文件:

        django1.x中使用的是url:支持正则

        django2.x中使用的是path:不支持正则,是精准匹配(写的是什么就按什么查找)

        django2.x中还使用re_path:re_path相当于django1.x中的url

 

path:支持5种转换器

 

Django默认支持的5个转换器:

        

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

 

1.1、自定义转换器

 


2、创建表关系:

        django1中不用指定on_delete,级联删除,级联更新

        django2中必须指定参数:on_delete:CASCADE

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

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

相关文章

Java架构师分布式搜索数据准确性解决方案

目录 1 Elasticsearch内置分词器1.1 Standard(标准分词器)1.2 Simple(简单分词器)1.3 Whitespace(空格分词器)1.4 Stop(停止分词器)1.5 Keyword(关键字分词器)1.6 Pattern(模板分词器)1.7 Language(语言分词器)1.8 Fingerprint(指纹分词器)2 Es 模糊查询 match…

SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)

接前一篇文章&#xff1a;SELinux零知识学习九、SELinux策略语言之客体类别和许可&#xff08;3&#xff09; 一、SELinux策略语言之客体类别和许可 3. 有效的客体类别 本节对Fedora Core 4&#xff08;FC4&#xff09;可用的内核客体类别做一个概述&#xff0c;目标是描述客…

[容器][Docker]Docker参数设置

refs: http://www.hangdaowangluo.com/archives/2431 容器内存相关 memory.limit_in_bytes # 限制容器使用交换分区和内存的总和&#xff0c;在默认情况下&#xff0c;总的内存限定值(内存交换分区)被设置为了内存限定值的两倍 memory.memsw.limit_in_bytes

《Effective C++》条款14

在资源管理类中小心copying行为 你写了一个用来管理锁的RAII对象&#xff1a; class Lock { public:Lock(mutex* m):mtx(m){mtx->lock();}~Lock(){mtx->unlock();} private:mutex* mtx; }; 关于拷贝RAII对象&#xff0c;你应该考虑这些&#xff1a; 1.禁止复制。 将copyi…

Qt 之自定义控件(开关按钮)

Qt 之自定义控件&#xff08;开关按钮&#xff09; 原理源码运行结果 接触过IOS系统的童鞋们应该对开关按钮很熟悉&#xff0c;在设置里面经常遇到&#xff0c;切换时候的滑动效果比较帅气。 通常说的开关按钮&#xff0c;有两个状态&#xff1a;on、off。 下面&#xff0c;我们…

网工内推 | 国企、上市公司售前,CISP/CISSP认证,最高18K*14薪

01 中电福富信息科技有限公司 招聘岗位&#xff1a;售前工程师&#xff08;安全&#xff09; 职责描述&#xff1a; 1、对行业、用户需求、竞争对手等方面提出分析报告&#xff0c;为公司市场方向、产品研发和软件开发提供建议&#xff1b; 2、负责项目售前跟踪、技术支持、需…

【软考篇】中级软件设计师 第四部分(三)

中级软件设计师 第四部分&#xff08;三&#xff09; 三十四. 结构化开发方法34.1 内聚34.2 耦合 三十五. 测试基础知识三十六. 面向对象36.1 UML图36.2 设计模式36.3 数据流图 读前须知&#xff1a; 【软考篇】中级软件设计师 学前须知 上一章节&#xff1a; 【软考篇】中级软…

字母异位词分组[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个字符串数组&#xff0c;请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan"…

C# 泛型介绍

C# 中的泛型&#xff08;Generics&#xff09;是一种强类型参数化的特性&#xff0c;它允许你编写不具体指定数据类型的代码&#xff0c;而在实际使用时再指定具体的类型。泛型的引入使得代码更加灵活、可重用&#xff0c;并提高了类型安全性。 C#泛型基本用法 以下是一个简单…

【全网首发】【Python】Python控制parrot ARDrone 2.0无人机

&#x1f389;欢迎来到Python专栏~Python控制parrot ARDrone 2.0无人机 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文中出现错误…

交换机聚合配置 (H3C)

交换机聚合配置 &#xff08;H3C&#xff09; 聚合是什么如何配置聚合 聚合是什么 链路聚合是将两个或更多数据信道结合成一个单个的信道&#xff0c;该信道以一个单个的更高带宽的逻辑链路出现。一般用来连接一个或多个带宽需求大的设备&#xff0c;例如连接骨干网络的服务器…

基于IDEA创建Maven工程及注意事项

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 1. 概念梳理Maven工程的GAVP Maven工程相对之前的项目&#xff0c;多出一组gavp属性&#xff0c;gav需要我们在创建项目的时候指定&#xff0c;p有默认值&#xff0c;我们先行了解下这组属性的含义&#xff1a; Ma…

java的Exception.getMessage为null

之前捕获异常后调用异常的getMessage写日志&#xff0c;日志写的竟然是null&#xff0c;不可思议。发现要调用异常的getCause().getMessage()才能得到异常信息 刻意把密码改错&#xff0c;让异常直达界面&#xff0c;免得有问题时候只能猜

LeetCode 面试题 16.22. 兰顿蚂蚁

文章目录 一、题目二、C# 题解 一、题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时&#xff0c;网格全白&#xff0c;蚂蚁面向右侧。每行走一步&#xff0c;蚂蚁执行以下操作。 (1) 如果在白色方格上&#xff0c;则翻转方格的颜色&#xff0c;向右(顺时针)转 90 度…

Linux Traefik工具Dashboard结合内网穿透实现远程访问

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

区域入侵AI算法如何应用在工地场景,保卫工地施工安全?

在工地、厂区等施工场所&#xff0c;安全保障是必不可少的&#xff0c;特别是在人工智能技术日益成熟的今天&#xff0c;如何利用旭帆科技AI智能视频中的区域入侵算法助力智慧工地、保障工地安全呢&#xff1f; 1、建筑物周界安全 TSINGSEE青犀区域入侵算法可以用于监控建筑物…

M系列 Mac安装配置Homebrew

目录 首先&#xff0c;验证电脑是否安装了Homebrew 1、打开终端输入以下指令&#xff1a; 2、如图所示&#xff0c;该电脑没有安装Homebrew &#xff0c;下面我们安装Homebrew 一、官网下载 &#xff08;不建议&#xff09; 1、我们打开官网&#xff1a;https://brew.sh/ …

Oracle 中排序碰到 null 值如何处理

一、前言 Oracle 在 Order by 时缺省认为null是最大值&#xff0c;所以如果是ASC升序则排在最后&#xff0c;DESC降序则排在最前。 二、使用nulls first 或者nulls last 语法 nulls first 和 nulls last 是Oracle Order by支持的语法。 如果Order by 中指定了表达式Nulls f…

MySql跨库跨表触发器

一、跨库触发器的概念 跨库触发器是指能在一个数据库中创建的触发器&#xff0c;但触发器的操作涉及到其他数据库中的表。这种触发器的存在可以帮助我们实现一些复杂的业务逻辑&#xff0c;比如在一个数据库中的表更新时&#xff0c;自动更新另一个数据库中的相关表。 二、创建…

QT Creator 正则替换功能

原有的代码&#xff1a; cout<<"11"<<11232<<"333"<<4444; 现在希望添加一个条件编译,变成这样&#xff1a; #ifdef __DEBUG__ cout<<"11"<<11232<<"333"<<4444; #endif 但是一个…