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获取脚本所在目录的正确方法
Apr 15 Python
从零学Python之入门(五)缩进和选择
May 27 Python
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
基于python实现删除指定文件类型
Jul 21 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
python OpenCV学习笔记
Mar 31 Python
python 中的jieba分词库
Nov 23 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魔术方法的使用示例
2015/06/23 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
python处理“
2019/06/10 Python
Python的log日志功能及设置方法
2019/07/11 Python
python打包成so文件过程解析
2019/09/28 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
大学生毕业自荐信
2013/10/10 职场文书
应届生财务管理求职信
2013/11/06 职场文书
社区庆八一活动方案
2014/02/02 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
主题团日活动总结
2014/06/25 职场文书
走进敬老院活动总结
2014/07/10 职场文书
员工手册编写范本
2015/05/14 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
Java如何实现树的同构?
2021/06/22 Java/Android
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL