Django框架之模型视图-使用 PostMan 对请求进行测试

news2024/9/24 9:23:05

使用 PostMan 对请求进行测试

PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件,可以直接去对我们写出来的路由和视图函数进行调试,作为后端程序员是必须要知道的一个工具。

  • 安装方式1:去 Chrome 商店直接搜索 PostMan 扩展程序进行安装
  • 安装方式2:Postman官网下载桌面版
  • 安装方式3:将已下载好的 PostMan 插件文件夹拖入到浏览器

    • 打开 Chrome 的扩展程序页面,打开开发者模式选项 
    • 将插件文件夹拖入到浏览器(或者点击加载已解压的扩展程序选择文件夹)
      • 在 Mac 下生成桌面图标,可以点击启动
      • 在 ubuntu 旧版的 Chrome 浏览器中会显示以下效果,可以直接点击启动 

  • 使用 PostMan,打开之后,会弹出注册页面,选择下方的Skip this,go straight to the app进行程序

HttpRequest对象

回想一下,利用HTTP协议向服务器传参有几种途径?

  • 提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取;
  • 查询字符串(query string),形如key1=value1&key2=value2;
  • 请求体(body)中发送的数据,比如表单数据、json、xml;
  • 在http报文的头(header)中。

1 URL路径参数

  • 如果想从URL中获取值,需要在正则表达式中使用分组
  • 获取值分为两种方式
    • 位置参数
      • 参数的位置不能错
    • 关键字参数
      • 参数的位置可以变,跟关键字保持一致即可
  • 注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式
  • 分别使用以上两种获取URL值的方式提取出18 188
    • http://127.0.0.1:8000/18/188/

位置参数

  • 应用中urls.py

     url(r'^(\d+)/(\d+)/$', views.index),
    
  • 视图中函数: 参数的位置不能错

    def index(request, value1, value2):
          # 构造上下文
          context = {'v1':value1, 'v2':value2}
          return render(request, 'Book/index.html', context)
    

关键字参数

  • 应用中urls.py

    • 其中?P<value1>部分表示为这个参数定义的名称为value1
    • 可以是其它名称,起名要做到见名知意

      url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.index),
      
  • 视图中函数: 参数的位置可以变,跟关键字保持一致即可

    def index(request, value2, value1):
          # 构造上下文
          context = {'v1':value1, 'v2':value2}
          return render(request, 'Book/index.html', context)
    

2 Django中的QueryDict对象

HttpRequest对象的属性GET、POST都是QueryDict类型的对象

与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

  • 方法get():根据键获取值

    如果一个键同时拥有多个值将获取最后一个值

    如果键不存在则返回None值,可以设置默认值进行后续处理

    get('键',默认值)
    
  • 方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值

    如果键不存在则返回空列表[],可以设置默认值进行后续处理

    getlist('键',默认值)
    

3. 查询字符串Query String

获取请求路径中的查询字符串参数(形如?k1=v1&k2=v2),可以通过request.GET属性获取,返回QueryDict对象。

# /get/?a=1&b=2&a=3

def get(request):
    a = request.GET.get('a')
    b = request.GET.get('b')
    alist = request.GET.getlist('a')
    print(a)  # 3
    print(b)  # 2
    print(alist)  # ['1', '3']
    return HttpResponse('OK')

重要:查询字符串不区分请求方式,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。

4 请求体

请求体数据格式不固定,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串,应区别对待。

可以发送请求体数据的请求方式有POSTPUTPATCHDELETE

Django默认开启了CSRF防护,会对上述请求方式进行CSRF防护验证,在测试时可以关闭CSRF防护机制,方法为在settings.py文件中注释掉CSRF中间件,如:

 

 

4.1 表单类型 Form Data

前端发送的表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象。

def post(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')

4.2 非表单类型 Non-Form Data

非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据,自己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。

例如要获取请求体中的如下JSON数据

{"a": 1, "b": 2}

可以进行如下方法操作:

import json

def post_json(request):
    json_str = request.body
    json_str = json_str.decode()  # python3.6 无需执行此步
    req_data = json.loads(json_str)
    print(req_data['a'])
    print(req_data['b'])
    return HttpResponse('OK')

5 请求头

可以通过request.META属性获取请求头headers中的数据,request.META为字典类型

常见的请求头如:

  • CONTENT_LENGTH– The length of the request body (as a string).
  • CONTENT_TYPE– The MIME type of the request body.
  • HTTP_ACCEPT– Acceptable content types for the response.
  • HTTP_ACCEPT_ENCODING– Acceptable encodings for the response.
  • HTTP_ACCEPT_LANGUAGE– Acceptable languages for the response.
  • HTTP_HOST– The HTTP Host header sent by the client.
  • HTTP_REFERER– The referring page, if any.
  • HTTP_USER_AGENT– The client’s user-agent string.
  • QUERY_STRING– The query string, as a single (unparsed) string.
  • REMOTE_ADDR– The IP address of the client.
  • REMOTE_HOST– The hostname of the client.
  • REMOTE_USER– The user authenticated by the Web server, if any.
  • REQUEST_METHOD– A string such as"GET"or"POST".
  • SERVER_NAME– The hostname of the server.
  • SERVER_PORT– The port of the server (as a string).

具体使用如:

def get_headers(request):
    print(request.META['CONTENT_TYPE'])
    return HttpResponse('OK')

6 其他常用HttpRequest对象属性

  • method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。
  • user:请求的用户对象。
  • path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。
  • encoding:一个字符串,表示提交的数据的编码方式。

    • 如果为None则表示使用浏览器的默认设置,一般为utf-8。
    • 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。
  • FILES:一个类似于字典的对象,包含所有的上传文件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表OJ(四)链表排序合集

目录 合并两个排序的链表 合并k个已排序的链表 单链表的排序 链表的奇偶重排 链表的奇偶重排扩展 合并两个排序的链表 描述 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围&#xff1a; 0≤n≤…

Spark12: SparkSQL入门

一、SparkSQL Spark SQL和我们之前讲Hive的时候说的hive on spark是不一样的。hive on spark是表示把底层的mapreduce引擎替换为spark引擎。而Spark SQL是Spark自己实现的一套SQL处理引擎。Spark SQL是Spark中的一个模块&#xff0c;主要用于进行结构化数据的处理。它提供的最核…

Kubernetes入门级教程

Kubernetes入门级教程1. Introduction1.1 概述1.2 关键字介绍2. Cluster Install2.1 Big Data -- Postgres3. 基础知识3.1 Pod3.2 控制器3.3 通讯模式3.4 服务发现4. Command4.0 编辑文件4.1 在宿主机执行命令4.2 创建资源对象4.3 查询资源对象4.4 查询资源描述4.5 修改资源4.6…

Linux 交换分区与链接文件

目录 SWAP交换分区扩展 fdisk 创建分区 mkswap 将逻辑分区/主分区格式化为交换分区&#xff08;make swap&#xff09; swapon 交换分区挂载 swapoff 卸载交换分区 vim /etc/fstab 永久挂载 将文件设置为交换分区 链接文件 软链接 硬链接 SWAP交换分区扩展 交换分区…

量子力学奇妙之旅-双态系统(后)

专栏: 高质量文章导航-持续更新中 引子: 感慨:对于还原论,物质深层结构的物理定律如此的复杂,求解一个简单的双态系统已经如此困难,运用了大量的近视方法,在宇宙真理面前,我们只是虫子啊,我们固有的概念里面对逻辑自洽性,对事物发展的可预测性必然性,真实世界的有…

2023美赛F题讲解+数据领取

我们给大家准备了F题的数据&#xff0c;免费领取&#xff01;在文末 国内生产总值(GDP)可以说是一个国家经济健康状况最著名和最常用的指标之--。它通常用于确定一个国家的购买力和获得贷款的机会,为各国提出提高GDP的政策和项目提供动力。GDP“衡量一个国家在给定时间段内生产…

docker中 gitlab 安装、配置和初始化

小笔记&#xff1a;gitlab配置文件 /etc/gitlab/gitlab.rb 配置项jcLee95 的CSDN博客&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/1…

运动款蓝牙耳机哪个品牌好、市面最火爆的运动耳机推荐

我们都知道运动最不可或缺的就是音乐了&#xff0c;它俩是天生的好搭档&#xff0c;所以凡是很经常运动的小伙伴一定会去单独选择一款超好用的运动耳机&#xff0c;来增强运动体验效果&#xff0c;那么市面上的运动耳机那么多&#xff0c;怎么选择一款好用的运动耳机呢&#xf…

MySql 函数

1、简述 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码在MySQL中已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 MySQL中的函数主要分为以下四类&#xff1a; 字符串函数…

【TypeScrip】TypeScrip的任意类型(Any 类型 和 unknown 顶级类型):

文章目录一、安转依赖&#xff1a;【1】nodejs 环境执行ts【2】使用ts-node二、Any 类型 和 unknown 顶级类型【1】没有强制限定哪种类型&#xff0c;随时切换类型都可以 我们可以对 any 进行任何操作&#xff0c;不需要检查类型【2】声明变量的时候没有指定任意类型默认为any【…

基于SSM框架的生活论坛系统的设计与实现

基于SSM框架的生活论坛系统的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景…

已解决ImportError: cannot import name ‘featureextractor‘ from ‘radiomics‘

已解决from radiomics import featureextractor导包&#xff0c;抛出ImportError: cannot import name ‘featureextractor‘ from ‘radiomics‘异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录报错问题报错翻译报错原因解决方法联系博…

centos7给已有分区进行扩容

1、背景 最近我在虚拟机上安装软件&#xff0c;发现磁盘空间不足&#xff0c;通过上网查找资料&#xff0c;发现可以通过如下方法进行磁盘扩容&#xff0c;此处进行记录一下。 2、实现扩容 1、虚拟机上添加一个新的硬盘 2、查看我们刚刚加入的硬盘 此处我们可以看到/dev/nvm…

Seata架构篇 - TCC模式

TCC 模式 概述 TCC 是分布式事务中的两阶段提交协议&#xff0c;它的全称为 Try-Confirm-Cancel&#xff0c;即资源预留&#xff08;Try&#xff09;、确认操作&#xff08;Confirm&#xff09;、取消操作&#xff08;Cancel&#xff09;。Try&#xff1a;对业务资源的检查并…

【MySQL进阶】视图 存储过程 触发器

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…

Unity3D -知识点(1)

1.场景视图鼠标滚轮&#xff1a;场景放大缩小鼠标右键&#xff1a;场景左右平移场景编辑器中&#xff0c;能看到什么&#xff1f;网格&#xff0c;每一格大小为1unit&#xff0c;建模不同&#xff0c;规定不同&#xff0c;(对应屏幕上100个像素)世界坐标系y轴向上为正x轴向右为…

每天10个前端小知识 【Day 18】

前端面试基础知识题 1.如何实现单行&#xff0f;多行文本溢出的省略样式&#xff1f; 在日常开发展示页面&#xff0c;如果一段文本的数量过长&#xff0c;受制于元素宽度的因素&#xff0c;有可能不能完全显示&#xff0c;为了提高用户的使用体验&#xff0c;这个时候就需要…

2023金三银四跳槽必会Java核心知识点笔记整理

现在互联网大环境不好&#xff0c;互联网公司纷纷裁员并缩减 HC&#xff0c;更多程序员去竞争更少的就业岗位&#xff0c;整的 IT 行业越来越卷。身为 Java 程序员的我们就更不用说了&#xff0c;上班 8 小时需要做好本职工作&#xff0c;下班后还要不断提升技能、技术栈&#…

惠普LaserJet M1005 MFP报错b2

故障现象: 惠普LaserJet M1005 MFP开机后直接报b2错误; 检测维修: 故障大意是:机器的硬件可能出现点突变,此问题建议联系当地维修中心进行处理。

【计算机网络】网络层

文章目录网络层概述网络层提供的两种服务IPv4地址IPv4地址概述分类编址的IPv4地址划分子网的IPv4地址无分类编址的IPv4地址IPv4地址的应用规划IP数据报的发送和转发过程静态路由配置及其可能产生的路由环路问题路由选择路由选择协议概述路由信息协议RIP的基本工作原理开放最短路…