首页 > 其他分享 >url函数的使用(支持正则)

url函数的使用(支持正则)

时间:2023-08-01 21:57:53浏览次数:34  
标签:函数 views url testadd 正则 urls test 路由

url函数的使用(支持正则)

# Django1X中使用的是url
	url(r'^test/', views.test),
    url函数的第一个参数是支持正则表达式的,如果匹配到了一个路由就不会往下匹配,直接执行到对应的视图层。
    Eg:
		url('test', views.test),
		url('testadd', views.testadd),
        # 如果我去访问testadd,那么他还是会执行test的视图层,因为正则的原因它会先匹配到text,然后去执行text的视图层
        
        解决办法就是:使用正则精准匹配
        url(r'^test/', views.test),
        url(r'^testadd/', views.testadd),
        "以....开头"
        
        "/"是哪里来的?
        # http://127.0.0.1:8000/test/
        是django默认设置的,django会先拿着test去匹配,如果匹配不到,它会自动加一个斜杠再次去匹配
        
        # django2中使用的是path
        path('test/', admin.site.urls), # path是不支持正则的,它是精准匹配,输入的内容和路由地址必须是完全不配
        re_path('^test/$', admin.site.urls) # django1中的url是完全一样的
1、无名分组

	分组:在正则中使用小括号括起来就是分组
    
    url(r'^testadd/(\d+)$', views.testadd),
    """注意:如果使用了分组那么就要在对应的视图层函数内定义一个任意名字的形参,用来接收testadd后面的(\d+)参数,无名分组对形参名字那没有限制要求"""
    
    def testadd(request, xxx):
        print(xxx) # http://127.0.0.1:8000/testadd/1333  xxx:1333
        return HttpResponse("add:testadd")
    
	"无名分组就是把路由地址匹配到的数据以位置形参的方式传递给视图函数"
2、有名分组
	url(r'^testadd/(?P<year>\d+)$', views.testadd),
    "如果使用了有名分组的方式,那么你在视图函数中的形参,就必须是你定义的那个名字,其他的跟无名分组没哟区别"
    def testadd(request, year):
        print(year)  # 2231
        return HttpResponse("add:testadd")
    
"""无名分组可以跟有名分组在一起使用,但是最好不要在一起使用"""

# 但是无名或者有名单独的可以使用多次
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)

反向解析

反向解析的意思是可以给路由起一个名字,然后通过一个方法解析出来这个名字对应的路由地址
    1、# 先给路由起一个别名
    	url(r'^texts/', views.text,name='ooo'), # name要放在被跳转的url里面
    2、# 反向解析
    	# 前端反向解析
       		<a href="{% url 'ooo' %}">111</a>
        # 后端反向解析
            借助于reverse模块
            from django.shortcuts import render,HttpResponse,redirect,reverse
            def text(request):
                return HttpResponse("test")

            def home(request):
                urls = reverse('ooo') # 这个要放在跳转的页面,而不是被跳转的
                return render(request, 'home.html', locals())
		"这样无论我们怎么改路由都可以正常访问"
# 无名分组反向解析
	1、url(r'^index/(\d+)/',views.index,name='xxx')

# 前端
	{% url 'xxx' 123 %}
# 后端
	reverse('xxx', args=(1,))

"""
这个数字写代码的时候应该放什么
	数字一般情况下放的是数据的主键值  数据的编辑和删除
	url(r'^edit/(\d+)/',views.edit,name='xxx')
	
	def edit(request,edit_id):
		reverse('xxx',args=(edit_id,))
		
	{%for user_obj in user_queryset%}
		<a href="{% url 'xxx' user_obj.id %}">编辑</a>
	{%endfor%}

今天每个人都必须完成的作业(*******)
	利用无名有名 反向解析 完成数据的增删改查
"""



# 有名分组反向解析
   url(r'^func/(?P<year>\d+)/',views.func,name='ooo')
# 前端
	<a href="{% url 'ooo' year=123 %}">111</a>  了解
	<a href="{% url 'ooo' 123 %}">222</a>  			记忆

# 后端	
	 # 有名分组反向解析 写法1  了解
   print(reverse('ooo',kwargs={'year':123}))
   # 简便的写法  减少你的脑容量消耗 记跟无名一样的操作即可
   print(reverse('ooo',args=(111,)))

Django中的path函数支持的5种转换器


路由分发

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

我们针对每一个应用也可以有自己的路由文件,每一个应用下的路由我们称之为是"子理由"

1、先在每个应用下面创建一个路由文件
2、在总路由中导入:
	from django.conf.urls import url, include
	urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('^app_one/', include('app_one.urls')),
    url('^app_two/', include('app_two.urls'))
]
    http://127.0.0.1:8000/app_one/testadd/123
    协议//网址//端口//当前路由所在的应用名称/路由/其它参数

"""这时候产生了很多的路由文件,匹配的时候先匹配总路由,然后由总路由分发到每个子路由"""
# 这时候的总路由任务就是分发,而执行到具体视图函数交给每个子路由

方式二:
	from app_one import urls as app_one_urls
	from app_two import urls as app_two_urls
    
    url('^app_one/', include(app_one_urls)),
    url('^app_two/', include(app_two_urls))
    
"""
	总路由中的路由分发地址后面一定不能加$
"""

伪静态概念

静态文件.html
我们的文件:
	http://127.0.0.1:8000/app01/index
搜索的文件:
	https://www.cnblogs.com/fanshaoO/p/17592993.html # 其实就是伪静态之后的地址

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

伪静态的作用是什么呢:
"""
	作用就是让搜索引擎增大seo的查询力度,言外之意就是让我们的页面能够更加容易的被搜索引擎搜索出来
"""
# 因为静态的页面更加容易被搜索引擎抓到,这个称之为是seo
# seo就是优化你们的产品能够被更容易的搜多到

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

虚拟环境(纯净版的解释器)

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

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

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

标签:函数,views,url,testadd,正则,urls,test,路由
From: https://www.cnblogs.com/chao0308/p/17599188.html

相关文章

  • 什么是递归?如果你以前从来没写过递归函数,尝试着写一个(比如用递归函数进行目录树遍历)。
    递归是一种在算法或函数中调用自身的方法。在递归过程中,问题会被分解成一个或多个相似的子问题,然后这些子问题又会进一步被分解,直到达到最简单的情况,从而得到解决。递归在编程中是一种强有力的工具,特别适合解决那些具有递归结构的问题。举个例子,我们可以使用递归函数来实现目录树......
  • mysql if 空字符串(如何使用mysql中的if函数处理空字符串)
    ysql中的if函数处理空字符串?ysql中,if函数可以用来实现条件判断。当我们需要处理空字符串时,可以使用if函数来判断字符串是否为空,然后根据判断结果进行相应的处理。if函数的语法如下:if(expr1,expr2,expr3)其中,expr1是条件表达式,如果该表达式的值为真,则返回expr2的值,否则返回expr3的值......
  • C++入门到放弃(05)——内联函数: inline
    ​1.基本用法要使用内联函数时,必须遵循如下规则:在函数声明前加上关键字inline,或着在函数定义前加上关键字inline,二者取其一即可。inlineintmax(inta,intb);//取其一即可inlineintmax(inta,intb){//取其一即可returna>b?a:b;}另外一种做......
  • C# HttpUtility.UrlEncode与 Uri.EscapeDataString区别
    相同点均是对url进行编码区别HttpUtility.UrlEncode会将空格转换为加号(+)Uri.EscapeDataString会将空格转换为%20适用场景HttpUtility.UrlEncode适用于url是查询参数Uri.EscapeDataString适用于url是作为文件路径使用......
  • 根据URL批量下载文件并压缩成zip文件
    根据url批量下载图片或者视频,只需要将图片的url和名称放到数组对象即可,例如:letfileArr=[{fvUrl:'https://image.xuboren.com/image/2023/07/26/1410829074764cdbaa4314a084eb749e.jpg',fvName:'图片名称'},{fvUrl:'https://image.xuboren.com/image/2023/07/......
  • 电商curl编码请求,抓取天猫商品页面
    请求参数请求参数:num_iid=652874751412&is_promotion=1参数说明:num_iid:商品IDis_promotion:是否获取取促销价请求示例 测试入口 CurlPHPPHPsdkJAVAC#Pythoncurl-i"https://api-gw.onebound.cn/taobao/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid......
  • PHPMySQL防注入 如何使用安全的函数保护数据库
    PHPMySQL防注入如何使用安全的函数保护数据库在进行PHP编程开发时,安全性一直是开发人员必须注意的问题,其中最重要的是防止SQL注入攻击。SQL注入攻击是指通过输入恶意代码来攻击数据库的一种方式,攻击者通过输入SQL语句来绕过程序的安全机制,达到控制和操作数据库的目的。为了避免......
  • PHPlstat函数的使用方法与实例解析
    PHP是一种广泛应用于Web开发的编程语言,它的开放性、通用性和易用性使其成为了Web领域中的主流语言。在PHP编程中,我们经常需要使用到一些函数来完成任务,其中非常重要的一个函数就是“PHPlstat”。这个函数可以用来获取文件的相关信息,本文将介绍PHPlstat函数的使用方法以及一些实例......
  • 什么是散列函数?HashMap 的实现原理是什么?
    散列函数(HashFunction)是一种将输入数据(通常是任意大小的数据)映射为固定大小散列值(哈希值)的函数。散列函数的目标是将数据均匀地映射到哈希值域,以便在哈希表等数据结构中高效地查找、插入和删除数据。好的散列函数应该尽可能避免冲突(即不同的输入映射到相同的哈希值),并具有良好的性......
  • 1688淘口令链接API接口-item_password-获得淘口令真实url 接口,淘口令API接口
    一、1688淘口令链接API接口-item_password-获得淘口令真实url接口,淘口令API接口代码如下:1.公共参数:名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥(点击获取key和secret)api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,......