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的线程来解决生产者消费问题的示例
Apr 02 Python
Python生成器(Generator)详解
Apr 13 Python
python实现连接mongodb的方法
May 08 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
Python查找文件中包含中文的行方法
Dec 19 Python
python实现Virginia无密钥解密
Mar 20 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
jupyter notebook 增加kernel教程
Apr 10 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
总结Python连接CS2000的详细步骤
Jun 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
?生?D片??C字串
2006/12/06 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
js实现微信分享代码
2020/10/11 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python实战教程之自动扫雷
2018/07/13 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
python基础梳理(一)(推荐)
2019/04/06 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
工厂会计员职责
2014/02/06 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
反腐倡廉观后感
2015/06/08 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers