Django_study_day14:视图类03

本文详细讲解了如何在后端通过正则表达式捕获并解析URL中的参数,包括位置参数和关键字参数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取url地址栏的值
我们经常会看到,在我们常见的网址后面带有一些参数,比如:https://blog.youkuaiyun.com/weixin_41996673/article/details/84800733
我们把这个网址拆分成两部分,https://blog.youkuaiyun.com/ 和 weixin_41996673/article/details/84800733,前半部分就是我们经常访问的网址,后面的就是网页的参数今天我们就讲述,如何在后端获取url的参数

首先,我们先模拟一下url匹配的过程:

1)假设,我们请求一个网页:http://127.0.0.1:8000/test1/ ,拿到url请求后将获取到的网址去除掉域名和参数部分,并将最前面的/去除后,只剩下如下部分与正则匹配

test1/

2)打开booktest/urls.py文件,定义与这个地址匹配的url如下:

url(r'^test\d+/$', views.show_num), # 获取url参数

3)在booktest/views.py中创建视图show_num

def show_num(request):
	'''获取url参数'''
	return HttpResponse('show_num')

4)启动服务器,输入上面的网址,浏览器中效果如下图

在这里插入图片描述

接下来我们在匹配过程中从url中捕获参数,每个捕获的参数都作为一个普通的python字符串传递给视图

获取值需要在正则表达式中使用小括号,分为两种方式:

  • 位置参数
  • 关键字参数

注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式

方式一:位置参数
直接使用小括号,通过位置参数传递给视图

1)为了提取参数,修改上面的正则表达式如下:

url(r'^test(\d+)/$', views.show_num), # 获取url参数

2)修改视图show_arg如下:

def show_num(request, num):
	'''获取url参数'''
	return HttpResponse('捕获到的参数为:%s' % num)

3)刷新浏览器页面,效果如下图:

在这里插入图片描述

修改url地址栏中的参数后刷新:

在这里插入图片描述

方式二:关键字参数
在正则表达式部分为组命名

1)修改正则表达式如下:

其中?P部分表示为这个参数定义的名称为id,可以是其它名称,起名做到见名知意

url(r'^test(?P<num>\d+)/$', views.show_num), # 获取url参数

2)修改视图show_num如下:

注意:视图show_num此时必须要有一个参数名为num,否则就会报错

def show_num(request, num):
	'''获取url参数'''
	return HttpResponse('捕获到的参数为:%s' % num)

3)刷新浏览器页面,效果如下图

在这里插入图片描述

错误情况:如果在booktest/views.py中传的参数名不是自己命名的关键字名字,则会出现如下错误:

在这里插入图片描述

解决方式:将booktest/views.py中传入的参数,改为urls.py中命名的关键字参数的名字

url(r'^test(?P<num>\d+)/$', views.show_num), # 获取url参数

def show_num(request, num):
	'''获取url参数'''
	return HttpResponse('捕获到的参数为:%s' % num)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值