Django 请求Request的具体使用方法


Posted in Python onNovember 11, 2019

1 URL路径参数

在定义路由URL时,使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图的传入参数中。

未命名参数按顺序传递, 如

url(r'^index/([a-z]+)/(\d{4})/$', views.index),

def index(request, parameter1, parameter2):
  print(parameter1)
  print(parameter2)
  return HttpResponse('OK')

有命名参数按名传递,如

url(r'^index/(?P<parameter1>[a-z]+)/(?P<parameter2>\d{4})/$', views.index),

def index(request, parameter1, parameter2):
  print(parameter1)
  print(parameter2)
  return HttpResponse('OK')

2、 查询字符串Query String

获取请求路径中的查询字符串参数,可以通过request.GET属性获取,返回QueryDict对象。

# /q/?a=2&b=3&a=4

def q(request):
  a = request.GET.get('a')
  b = request.GET.get('b')
  alist = request.GET.getlist('a')
  print(a) # 4
  print(b) # 3
  print(alist) # ['2', '4']
  return HttpResponse('OK')

2、 QueryDict对象

HttpRequest对象的属性GET、POST都是QueryDict类型的对象

方法get():根据键获取值

如果一个键同时拥有多个值将获取最后一个值

如果键不存在则返回None值,可以设置默认值进行后续处理

dict.get('键',默认值)
可简写为
dict['键']

方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值

如果键不存在则返回空列表[],可以设置默认值进行后续处理

dict.getlist('键',默认值)

3、 请求体

请求体数据格式不固定,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串,应区别对待。

可以有POST、PUT、PATCH、DELETE。

Django默认开启了CSRF防护,会对上述请求方式进行CSRF防护验证,在测试时可以关闭CSRF防护机制,方法为在settings.py文件中注释掉CSRF中间件,如:

Django 请求Request的具体使用方法

4、 表单类型 Form Data

前端发送的表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象

def body(request):
  a = request.POST.get('a')
  b = request.POST.get('b')
  alist = request.POST.getlist('a')
  print(a)
  print(b)
  print(alist)
  return HttpResponse('OK')

5、非表单类型 Non-Form Data

非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据。

import json

def body_json(request):
  json_str = request.body
  json_str = json_str.decode() # python3.6 无需这步
  data = json.loads(json_str)
  print(data['a'])
  print(data['b'])
  return HttpResponse('OK')

6、请求头

可以通过request.META属性获取请求头headers中的数据

Django 请求Request的具体使用方法

def headers(request):
  print(request.META['SERVER_PORT'])
  return HttpResponse('OK')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python使用scrapy发送post请求的坑
Sep 04 Python
tensorflow实现加载mnist数据集
Sep 08 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python实现可逆简单的加密算法
Mar 22 Python
Python中实现输入一个整数的案例
May 03 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
用python读取xlsx文件
Dec 17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
python lambda的使用详解
Feb 26 Python
Python实现制作销售数据可视化看板详解
Nov 27 Python
浅谈Python类中的self到底是干啥的
Nov 11 #Python
python 调试冷知识(小结)
Nov 11 #Python
通过 Django Pagination 实现简单分页功能
Nov 11 #Python
python机器学习实现决策树
Nov 11 #Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 #Python
django中间键重定向实例方法
Nov 10 #Python
Java文件与类动手动脑实例详解
Nov 10 #Python
You might like
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
python提示No module named images的解决方法
2014/09/29 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
歌唱比赛获奖感言
2014/01/21 职场文书
企业指导教师评语
2014/04/28 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
汉字听写大会观后感
2015/06/12 职场文书
建议书的格式及范文
2015/09/14 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python