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 返回汉字的汉语拼音
Feb 27 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
sklearn的predict_proba使用说明
Jun 28 Python
python绘图模块之利用turtle画图
Feb 12 Python
Python实现socket库网络通信套接字
Jun 04 Python
Python包argparse模块常用方法
Jun 04 Python
python中对列表的删除和添加方法详解
Feb 24 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
python删除过期文件的方法
2015/05/29 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
pandas如何处理缺失值
2019/07/31 Python
python实现堆排序的实例讲解
2020/02/21 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
宝信软件JAVA工程师面试经历
2012/08/19 面试题
2014年公司迎新年活动方案
2014/02/24 职场文书
大学生求职信
2014/06/17 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
个人德育工作总结
2015/03/05 职场文书
高中班主任心得体会
2016/01/07 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android