Python Django获取URL中的数据详解


Posted in Python onNovember 01, 2021

Django获取URL中的数据

URL中的参数一般有两种形式。如下所示:

1. https://zy010101.blog.csdn.net/article/details/120816954
2. https://so.csdn.net/so/search?q=Django&t=blog&u=zy010101

我们将第一种形式称为“URL路径参数”;第二种形式称为“URL关键字形式”。下面讲述如何在Django中获取这两种形式的数据。

URL路径参数

使用path函数

from django.urls import path
from . import views
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:slug>/', views.article_detail),
]

关于这段URL的解释说明,直接参考Django官方文档即可。

为了防止有时候进不去文档,我将官方文档也直接贴在下面:

Python Django获取URL中的数据详解

使用re_path函数

如果,使用path函数并不能满足你匹配URL的要求,那么可以使用re_path函数来使用正则表达式来匹配URL路径中的参数。需要注意在Django中,使用正则表达式来获取分组中的值的语法是(?P<name>pattern),其中 name 是组名,pattern 是要匹配的模式。

from django.urls import path, re_path
from . import views
urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail),
]

这段URL配置的说明可以参考使用正则表达式

同样,为了防止有时候进不去文档,我将官方文档也直接贴在下面:

Python Django获取URL中的数据详解

需要特别注意的是,正则表达式进行匹配之后,捕获的参数都作为字符串传递给视图函数(视图类)。

URL关键字形式

通常,除了在URL路径中传递数据,也可以在URL参数中进行数据传递。例如:

http://www.demo.com/index?keys=123&values=qwe

这段URL传递了参数keys和values,它们的值分别是123,qwe.

在此之前,先来介绍一下前备条件QueryDict。

HttpRequest对象的属性GET、POST都是QueryDict类型的对象

Django获取URL关键字参数可以通过HttpRequest.GET属性来获取。例如:

def test(request):
    a = request.GET.get("a")
    b = request.GET.get("b")
    c = request.GET.get("c")
    a_all = request.GET.getlist("a")
    res = a+'<br>'+b+'<br>'+c+'<br>'+str(a_all)
    return HttpResponse(res)

现在使用如下的URL进行请求:

http://127.0.0.1:8008/test?a=1&a=2&b=3&c=4

页面显示如下所示:

Python Django获取URL中的数据详解

查询字符串不区分请求方式,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Python 相关文章推荐
在Python的Django框架下使用django-tagging的教程
May 30 Python
详解Python3中yield生成器的用法
Aug 20 Python
对python中return和print的一些理解
Aug 18 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
如何利用python给图片添加半透明水印
Sep 06 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
python编程项目中线上问题排查与解决
Nov 01 #Python
python实现层次聚类的方法
Python list列表删除元素的4种方法
Nov 01 #Python
Python面向对象编程之类的概念
Nov 01 #Python
python代码实现扫码关注公众号登录的实战
python编程实现清理微信重复缓存文件
Nov 01 #Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
功能强大的php分页函数
2016/07/20 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
vue单元格多列合并的实现
2020/11/26 Vue.js
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
详解python中__name__的意义以及作用
2019/08/07 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python如何实现DES加密
2020/09/21 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
python神经网络编程之手写数字识别
2021/05/08 Python
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL