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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python控制台显示时钟的示例
Feb 24 Python
python中os操作文件及文件路径实例汇总
Jan 15 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
Python3实现建造者模式的示例代码
Jun 28 Python
python 常见的反爬虫策略
Sep 27 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Django开发中的日志输出的方法
2018/07/02 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
函授药学自我鉴定
2014/02/07 职场文书
责任担保书范文
2014/05/21 职场文书
记账会计岗位职责
2014/06/16 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书