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模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
TensorFlow saver指定变量的存取
Mar 10 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
基于DataFrame改变列类型的方法
Jul 25 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Django操作session 的方法
Mar 09 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 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禁止页面缓存的代码
2011/10/23 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
javascript json 新手入门文档
2009/12/03 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
javascript如何创建对象
2016/08/29 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python实现查看系统启动项功能示例
2018/05/10 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
秋游活动策划方案
2014/02/16 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
高三复习计划
2015/01/19 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
护理自荐信
2019/05/14 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL