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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
Python对列表排序的方法实例分析
May 16 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
python进阶之自定义可迭代的类
Aug 20 Python
python实现简单图书管理系统
Nov 22 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
Django如何使用redis作为缓存
May 21 Python
Pycharm修改python路径过程图解
May 22 Python
利用Python将多张图片合成视频的实现
Nov 23 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图片添加水印功能示例小结
2016/10/03 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
vuex入门最详细整理
2020/03/04 Javascript
用python写PDF转换器的实现
2020/10/29 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
四年级下册教学反思
2014/02/01 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
整改通知书
2015/04/20 职场文书
实习单位意见
2015/06/04 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
七年级生物教学反思
2016/02/20 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL