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(图文)
Nov 04 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python生成不重复随机值的方法
May 11 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
django加载本地html的方法
May 27 Python
Python模块、包(Package)概念与用法分析
May 31 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
python处理document文档保留原样式
Sep 23 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
导致python中import错误的原因是什么
Jul 01 Python
opencv 阈值分割的具体使用
Jul 08 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 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
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
python计算n的阶乘的方法代码
2019/10/25 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
让世界充满爱演讲稿
2014/05/24 职场文书
环保志愿者活动方案
2014/08/14 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
家装电话营销开场白
2015/05/29 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
详解如何使用Nginx解决跨域问题
2022/05/06 Servers