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 3支持mysqldb的解决方法
Feb 14 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
Python装饰器用法实例分析
Jan 14 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Django框架安装方法图文详解
Nov 04 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
python爬虫容易学吗
Jun 02 Python
pytorch显存一直变大的解决方案
Apr 08 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 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
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
js实现DIV的一些简单控制
2007/06/04 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
javascript测试题练习代码
2012/10/10 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
Python学习pygal绘制线图代码分享
2017/12/09 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Django实现文件上传下载功能
2019/10/06 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python在地图上画比例的实例详解
2020/11/13 Python
会计自荐书
2013/12/02 职场文书
商铺门前三包责任书
2014/07/25 职场文书
单位员工收入证明样本
2014/10/09 职场文书
先进个人事迹材料
2014/12/29 职场文书
调解协议书范本
2016/03/21 职场文书
2019公司管理制度
2019/04/19 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL