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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
python中self原理实例分析
Apr 30 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
python+django快速实现文件上传
Oct 24 Python
Python中对象的引用与复制代码示例
Dec 04 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Selenium 安装和简单使用的实现
Dec 04 Python
Python用access判断文件是否被占用的实例方法
Dec 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实现mysql数据库备份类
2008/03/20 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
鼠标图片振动代码
2006/07/06 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
html5+canvas实现支持触屏的签名插件教程
2017/05/08 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
详解javascript函数写法大全
2019/03/25 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
使用Python写个小监控
2016/01/27 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
技术总监管理职责范本
2014/03/06 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
golang内置函数len的小技巧
2021/07/25 Golang
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS