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 代码性能优化技巧分享
Aug 07 Python
django之session与分页(实例讲解)
Nov 13 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
NumPy 数组使用大全
Apr 25 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
python多任务之协程的使用详解
Aug 26 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python实现不规则图形填充的思路
Feb 02 Python
python怎么自定义捕获错误
Jun 29 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
Python实现排序方法常见的四种
Jul 15 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 class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
拖动时防止选中
2017/02/03 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
python多线程用法实例详解
2015/01/15 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Django实现基于类的分页功能
2019/10/31 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Python实现石头剪刀布游戏
2021/01/20 Python
Python爬取梨视频的示例
2021/01/29 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
党员岗位承诺口号大全
2014/03/28 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
教育见习报告范文
2014/11/03 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
以下牛机,你有几个
2022/04/05 无线电