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 相关文章推荐
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python set内置函数的具体使用
Jul 02 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
dpn网络的pytorch实现方式
Jan 14 Python
python实现猜数游戏
Mar 27 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
python基础之匿名函数详解
Apr 21 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
把77A收信机改造成收音机
2021/03/02 无线电
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
YII实现分页的方法
2014/07/09 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
javascript截取字符串小结
2015/04/28 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python程序运行原理图文解析
2018/02/10 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python创建数字列表的示例
2019/11/28 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
python中添加模块导入路径的方法
2021/02/03 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
金智子午JAVA面试题
2015/09/04 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
机关单位动员会主持词
2014/03/20 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
水电工程师岗位职责
2015/02/13 职场文书
初中语文教学反思范文
2016/03/03 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL