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登录豆瓣并发帖的方法
Jul 08 Python
Python ftp上传文件
Feb 13 Python
Python中flatten( )函数及函数用法详解
Nov 02 Python
python实现接口并发测试脚本
Jun 25 Python
使用python 写一个静态服务(实战)
Jun 28 Python
实例详解Python装饰器与闭包
Jul 29 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python代码中怎么换行
Jun 17 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
python生成xml时规定dtd实例方法
Sep 21 Python
Python排序函数的使用方法详解
Dec 11 Python
Python如何用re模块实现简易tokenizer
May 02 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php计算年龄精准到年月日
2015/11/17 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
php实现网页端验证码功能
2017/07/11 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
用 JSON 处理缓存
2007/04/27 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python搜索指定目录的方法
2015/04/29 Python
关于Django外键赋值问题详解
2017/08/13 Python
python发送告警邮件脚本
2018/09/17 Python
python 多线程重启方法
2019/02/18 Python
python实现列表的排序方法分享
2019/07/01 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Python调用C语言的实现
2019/07/26 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
校车安全责任书
2014/08/25 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python