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 13 Python
python sort、sorted高级排序技巧
Nov 21 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
django1.11.1 models 数据库同步方法
May 30 Python
python生成ppt的方法
Jun 07 Python
Python3实现转换Image图片格式
Jun 21 Python
python3正则提取字符串里的中文实例
Jan 31 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
python 导入数据及作图的实现
Dec 03 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
Python叠加矩形框图层2种方法及效果
Jun 18 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 Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python类的用法实例浅析
2015/05/27 Python
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
tensorflow的计算图总结
2020/01/12 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
值传递还是引用传递
2015/02/08 面试题
自我评价格式
2014/01/06 职场文书
建筑个人求职信范文
2014/01/25 职场文书
学生安全责任书范本
2014/07/24 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
java多态注意项小结
2021/10/16 Java/Android