当前位置: 首页 > news >正文

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.lryc.cn/news/231759.html

相关文章:

  • 【nlp】2.5 人名分类器实战项目(对比RNN、LSTM、GRU模型)
  • 海康Visionmaster-环境配置:MFC 二次开发环境配置方法
  • 利用EXCEL中的VBA对同一文件夹下的多个数据文件进行特定提取
  • FPGA时序约束(七)文献时序约束实验测试
  • 【数据库开发】DataX开发环境的安装部署(Python、Java)
  • Flutter实践一:package组织
  • SpringCloud微服务:Ribbon负载均衡
  • 【教程】大气化学在线耦合模式WRF/Chem
  • GDS 命令的使用 srvctl service TAF application continuity
  • go 语言之 select
  • 23款奔驰GLC260L升级小柏林音响 全新15个扬声器
  • ssh 免密码登录
  • 小程序使用腾讯位置插件获取当前位置
  • 零基础学Python怎么学习?我来告诉你
  • 开源软件 FFmpeg 生成模型使用图片数据集
  • Linux Shell 通配符 / glob 模式
  • 深入了解域名与SSL证书的关系
  • 计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法
  • 2023.11.14 hivesql的容器,数组与映射
  • Android Glide照片宫格RecyclerView,点击SharedElement共享元素动画查看大图,Kotlin(1)
  • SELinux零知识学习八、SELinux策略语言之客体类别和许可(2)
  • deepstream-测试发送AMQP
  • LLMs可以遵循简单的规则吗?
  • 如何挑选护眼灯?光照均匀度、色温、眩光这3点!
  • python 实验7
  • 日历应用程序 BusyCal mac中文版软件特点
  • 软件测试/测试开发丨接口自动化测试,接口鉴权的多种方式
  • 08 robotframework 修改乱码问题
  • 门店如何设置多个联系电话和营业时间
  • 第5章 字典和结构化数据