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开发常用的一些开源Package分享
Feb 14 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
Python pymongo模块用法示例
Mar 31 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Python中的特殊方法以及应用详解
Sep 20 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
健身房被搭讪?用python写了个小米计时器助人为乐
Jun 08 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使用sql数据库 获取字段问题介绍
2013/08/12 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
javascript 函数速查表
2010/02/07 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
详解如何设置Python环境变量?
2019/05/13 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
教师绩效考核方案
2014/01/21 职场文书
音乐教学随笔感言
2014/02/19 职场文书
新年爱情寄语
2014/04/08 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
2019求职信大礼包
2019/05/15 职场文书
Python爬取某拍短视频
2021/06/11 Python
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS