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实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
python如何实现反向迭代
Mar 20 Python
Django学习教程之静态文件的调用详解
May 08 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
python实现滑雪游戏
Feb 22 Python
Python函数基本使用原理详解
Mar 19 Python
python中加背景音乐如何操作
Jul 19 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
如何通过一篇文章了解Python中的生成器
Apr 02 Python
python区块链持久化和命令行接口实现简版
May 25 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python性能优化的20条建议
2014/10/25 Python
python PyTorch预训练示例
2018/02/11 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Django框架验证码用法实例分析
2019/05/10 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
汽车队司机先进事迹材料
2014/02/01 职场文书
生日宴会策划方案
2014/06/03 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
2014年团总支工作总结
2014/11/21 职场文书
感谢信的格式
2015/01/21 职场文书
博士论文答辩开场白
2015/06/01 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Python循环之while无限迭代
2022/04/30 Python