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发送Email方法实例
Aug 21 Python
Python中functools模块的常用函数解析
Jun 30 Python
python字符串,数值计算
Oct 05 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
用Python生成HTML表格的方法示例
Mar 06 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
如何在向量化NumPy数组上进行移动窗口
May 18 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
各种战术和打法的原创者
2020/03/04 星际争霸
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
自己前几天写的无限分类类
2007/02/14 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python2.7安装图文教程
2018/03/13 Python
python字符串string的内置方法实例详解
2018/05/14 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
python画折线图的程序
2018/07/26 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
深圳-东方伟业笔试部分
2015/02/11 面试题
教育系毕业生中文求职信范文
2013/10/06 职场文书
英语生日邀请函
2014/01/23 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript