首页 > 其他分享 >URL函数的使用(支持正则表达式)、分组、反向解析、Django2的转换器、路由分发、伪静态的概念、虚拟环境

URL函数的使用(支持正则表达式)、分组、反向解析、Django2的转换器、路由分发、伪静态的概念、虚拟环境

时间:2023-07-31 18:47:59浏览次数:43  
标签:匹配 views URL Django2 虚拟环境 分组 test path 路由

url('test', views.test),
url函数的第一个参数是支持正则表达式的
如果匹配到一个路由,就不在往下匹配,直接执行路由对应的视图函数

 http://127.0.0.1:8000/test/
是django默认设置的,django会先拿着test去匹配,如果匹配不到,它会自动加一个斜杠再次去匹配

 去浏览器器搜索textadd只能搜到text

 这是因为url匹配到一个路由,就不在往下匹配,直接执行路由对应的视图函数

APPEND_SLASH = False  默认不叫斜杠匹配(需要去配置文件中添加)

django2中使用的是path

  path('test/', admin.site.urls) path是不支持正则的,它是精准匹配,输入的内容和路由地址必须是完全不配
  re_path('^test/$', admin.site.urls) django1中的url是完全一样的

无名分组

无名分组:在正则表达式中使用小括号括起来的内容就是分组
  单独的分组其实是没有意义的,它不影响我们的正常匹配
  re模块中的分组优先原则 re.match()
  先把分组的内容显示出来

  url('^test/(\d+)/(\d+)$', views.test),
  def test(request, xx, yy):
  print(xx, yy) # 123
  return HttpResponse("test")

无名分组就是把路由地址匹配的的数据以位置参数的形式传递给视图函数

路由

前端访问

 后端代码

 结果

  有名分组

有名分组:在正则表达式中使用小括号括起来的内容然后给它起个名字就是有名分组
url('^testadd/(?P<year>\d+)/(?P<month>\d+)$', views.testadd)

有名分组就是把路由地址匹配的的数据以关键字参数的形式传递给视图函数

两种传参方式

http://127.0.0.1:8000/testadd/123/11
http://127.0.0.1:8000/testadd/?a=1&b=2

有名分组和无名分组能否一起使用
  最好不要一起使用

但是无名或者有名单独的可以使用多次
url('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)
url('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),

 

django2中的用法
re_path('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),
re_path('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)

无名分组和有名分组还可以使用*args和**kwargs来接受

代码

 URL

 访问页面

 打印结果

 

反向解析

反向解析:  意思是可以给路由起一个名字,然后通过一个方法可以解析出这个名字对应的路由地址

后端反向解析
print(reverse('test')) # /test/ /test/v1/ /test/v1/v2

路由

 前端请求

 后端代码

 

前端解析
<a href="{% url 'test' %}">点我</a>

前端页面

 后端代码

 路由层

 html页面

 结果

 无名分组反向解析

前端解析
<a href="{% url 'test' 111 %}">点我</a>

后端代码

 路由

 html页面

 访问页面

 结果

 

后端解析
print(reverse('test', args=(123, ))) /test/123

代码

 结果

 访问页面

 路由

 

# 问题:这个参数我到底指定几?
reverse('test', args=(123, ))

有名分组反向解析

前端解析

<a href="{% url 'testadd' 2023 12 %}">点我</a>

后端代码

 html页面

 访问页面

 结果

 

后端解析
print(reverse('testadd',kwargs={'year':2023, 'month':12})) # /testadd/2023 /testadd/2023/12

后端代码

 结果

 访问页面

 路由

 

 

 

 

django2(path不支持正则)中的path函数支持的5种转换器

path('test/', admin.site.urls)
Django2默认支持以下5个转化器:

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

urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug>/', views.article_detail),
  # path才支持,re_path不支持
path('order/<int:year>',views.order),
]

 

路由分发

目前一个django项目只有一个总路由文件urls.py
但是当我们的路由比较多的时候,这个文件就会产生很多的路由地址,产生的问题就是理由比较臃肿,不太容易管理,也不太容易排查错误

我们针对每一个应用也可以有自己的路由文件,每一个应用下的路由我们称之为是子路由
但是你会发现每一个应用下面没有urls.py这个文件
我们需要自己手动创建出来一个文件

这个时候产生了很多的路由文件,匹配的时候先匹配总路由,然后有总路由进行分发到每个子路由
这个时候总路由的作用就是分发了,总路由就不再执行具体的视图函数,而是交给子路由

第一种

  url('^app01/', include(app01_urls)),

    代码含义:以后以app01开头的就交给app01下的URL去匹配

访问地址:http://127.0.0.1:8000/app01/text/2023/12/

需要导入include模块

 

第二种方式:不需要导入from app01 import urls

  url('^app01/', include('app01.urls')),

ps:总路由中的路由分发地址后面一定不能加$

伪静态的概念

静态文件:HTML、css、JS等文件

动态访问地址:http://127.0.0.1:8000/app01/index

伪静态访问地址:https://www.cnblogs.com/fanshaoO/p/17592993.html

原本这个地址是动态的,数据是从数据库中查询出来的,而不是在html页面中写死的

为什么伪静态

作用就是让搜索引擎增大seo的查询力度,言外之意就是让我们的页面能够更加容易的被搜索引擎搜索出来

搜索引擎就相当于一个巨大的爬虫程序

因为静态页面更好捕捉,称之为seo

seo就是把产品能够被更容易搜索到

SEO---------------------->一般是通过技术手段等实现
SEM---------------------->它是需要收费的,其实就是广告

虚拟环境

一般我们开发项目是一个单独的项目使用一个单独的解释器环境
举例:
开发一个CRM系统:3.6
开发一个OA系统:3.7
开发一个商城系统:3.6

难道我们每一个项目都使用一个解释器吗? 肯定不是


每个项目单独使用一个解释器版本,这个解释器中只安装这个项目使用到的模块

每开发一个项目我就下载一个解释器,当然能够解决问题,你想这样做吗?
我们会使用虚拟环境来解决这个问题
虚拟环境其实就是一个纯净版本的解释器,你不用每次都下载和安装
它就是一个文件夹形式存在的解释器

虚拟环境尽量不要创建,创建出来够你的项目使用就行了

虚拟环境还可以通过命令创建

 

标签:匹配,views,URL,Django2,虚拟环境,分组,test,path,路由
From: https://www.cnblogs.com/shanghaipudong/p/17594190.html

相关文章

  • Jenkins 修改 webhook 链接 URL
    说明2023-03-1221:11:03 分享了一篇  https://blog.51cto.com/wst021sh/6116280 ,也就是介绍 Pipeline对比的文章。这里在简单阐述一下,Pipeline就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排......
  • url函数的使用,无名分组和有名分组,反向解析,django2中5种转换器,路由分发,伪静态的概
    url函数的使用(支持正则表达式)#django1中使用的是urlurl('test',views.test),url函数的第一个参数是支持正则表达式的如果匹配到一个路由,就不在往下匹配,直接执行路由对应的视图函数#http://127.0.0.1:8000/test/是django默认设置的,django会先拿着test去匹配,如果匹配不......
  • python urldecoder
    PythonURL解码器实现步骤简介在网络通信中,URL(UniformResourceLocator)经常被用来定位网上资源。为了能够准确地传递URL中的参数,我们需要对URL进行编码和解码。在Python中,我们可以使用内置的urllib库来实现URL解码器。实现步骤下面是实现PythonURL解码器的步骤:步骤描述......
  • Python爬虫遇到URL错误解决办法大全
    在进行Python爬虫任务时,遇到URL错误是常见的问题之一。一个错误的URL链接可能导致爬虫无法访问所需的网页或资源。为了帮助您解决这个问题,本文将提供一些实用的解决方法,并给出相关代码示例,希望对您的爬虫任务有所帮助。一、了解URL错误URL错误通常是指所请求的链接无效或无法找到。......
  • - 通过结合前端页面实现ORM对数据的增删改查 - Django中如何创建表关系 - 一对一
    通过结合前端页面实现ORM对数据的增删改查案例:写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮1.首先在数据库创建一个表格1.在model.py中创建表格 2.pythonmanage.pymakemigratins迁移记录   3.......
  • curl 常用命令
    curl发送post请求json数据curl-XPOST-H"Content-Type:application/json"-H"referer:http://localhost"http://localhost:8080/test/hello-d'{"param":"20210608"}'--用本地json文件(在执行该命令下的目录中新建param.json)curl......
  • SAP Fiori Elements 应用 OData 元数据请求 url 里的模型名称决定逻辑
    问题我用yarnstart本地启动一个SAPFioriElements应用,在Chrome开发者工具network面板,观察到一个ODatametadata请求的url如下:http://localhost:8080/sap/opu/odata/sap/SEPMRA_PROD_MAN/$metadata?sap-value-list=none&sap-language=EN这个OData服务名称SEPM......
  • SAP Fiori Elements 应用加载时的 url 参数 sap-ui-xx-viewCache=false
    SAPFioriElements是SAP提供的一种UI技术,其主要目的是提供一种快速、简单、一致且易于维护的方式来开发SAP用户界面。而sap-ui-xx-viewCache=false是一个URL参数,用于控制FioriElements应用的视图缓存。在SAPFioriElements中,视图缓存是一个可以提高应用性能的......
  • SAP UI5 OData 请求 url 中的参数 sap-value-list=none
    SAPUI5是一个基于JavaScript的用户界面技术,用于构建企业级web应用程序。OData(OpenDataProtocol)是一个开放标准,允许消费者查询和操作数据。在SAPUI5应用中,OData服务用于处理数据交换。当SAPUI5应用加载时,应用会自动发起一个OData元数据请求,这是因为应用需要从服务端获取元数......
  • url编码
    1、介绍(1)编码方案url中存在某些敏感字符作为其结构描述符,如果要表达敏感字符作为普通文本,需要进行转码,即url编码。url编码是将字符转为utf-8,然后对每个字节前加%字符。一般,会对url结构描述符、ascii无法直接表达的字符、以及超出ascii编码的字符进行转码,而其他是否转码均可。......