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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
Python 用户登录验证的小例子
Mar 06 Python
Python实现控制台进度条功能
Jan 04 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
Python实现Event回调机制的方法
Feb 13 Python
Python中如何导入类示例详解
Apr 17 Python
python找出因数与质因数的方法
Jul 25 Python
python获取array中指定元素的示例
Nov 26 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
python中xlutils库用法浅析
Dec 29 Python
Pandas自定义选项option设置
Jul 25 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jquery动态创建div与input的实例代码
2016/10/12 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
利用python脚本如何简化jar操作命令
2019/02/24 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
大学自我鉴定范文
2013/12/26 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
师德师风个人总结
2015/02/06 职场文书
工作简历的自我评价
2019/05/16 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL