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 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
Python中random模块用法实例分析
May 19 Python
python web基础之加载静态文件实例
Mar 20 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
Python3实现的反转单链表算法示例
Mar 08 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
解决Python3下map函数的显示问题
Dec 04 Python
python 多进程队列数据处理详解
Dec 23 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
python 基于opencv去除图片阴影
Jan 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
编写自己的php扩展函数
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python中return如何写
2020/06/18 Python
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
房屋转让协议书范本
2014/04/11 职场文书
学生党员公开承诺书
2014/05/28 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
爱国主义影片观后感
2015/06/18 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫