使用Flask.Request的方法和属性,获取get和post请求参数(二)

1、Flask中的request

在Python发送Post、Get等请求时,我们使用到requests库。Flask中有一个request库,有其特有的一些方法和属性,注意跟requests不是同一个。

2、Post请求:request.get_data()

用于服务端获取客户端请求数据。注意:是未经任何处理的原始数据而不管内容类型,如果数据时json的,则取得是json字符串,排序和请求参数一致。

2.1 Flask代码

不同方法的示例仅需要更换视图函数,后续仅展示视图函数。

# 注意:flask中的request和requests库不是同一个,要区分开
from flask import Flask, request

# 创建一个flask实例
app = Flask(__name__)


# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
    # 获取未经处理过的原始数据而不管内容类型,如果数据格式是json的
    # 则取得是json字符串,排序和请求参数一致
    data = request.get_data()
    print(data)
    print(type(data))
    return 'hello world'


if __name__ == '__main__':
    app.run()

2.2 测试代码(一直应用于后续章节,不再赘述)

import requests

data = {
    "username": "cc",
    "password": "123456"
}

url = "http://127.0.0.1:5000/"
resp = requests.post(url=url, json=data)
print('post:', resp)
print('post:', resp.text)

resp = requests.get(url=url, params=data)
print('get:', resp)
print('get:', resp.text)

2.3 执行效果

2.3.1 Flask

get.data()获取到的请求数据是字节流,排序和请求参数一致。
在这里插入图片描述

2.3.2 请求结果

get和post请求都成功了。
在这里插入图片描述

3、Post请求:request.data

获取到的也是未经处理的原始数据,如果数据格式是json的,则取得是json字符串,排序和请求参数一致。request.get_data()效果一样

4、Post请求:request.get_json()

将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则

4.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
	  # 将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。
    data = request.get_json()
    print(data)
    print(type(data))
    # 服务端就可以根据字典进行取值
    username = request.get_json()["username"]
    print(username)
    return 'hello world'

4.2 执行效果

4.2.1 Flask

将请求参数做了处理,得到字典格式,方便服务端按键取值,提取到username是“cc”。

注意:get请求是没有字典的,不能够取值,运行时可以注释掉get方法。
在这里插入图片描述

4.2.2 请求结果

post请求成功。
在这里插入图片描述

5、Post请求:request.json

跟request.get_json()效果相同。得到的是字典格式的,因此排序会打乱,依据字典排序规则。

代码如下:

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
	# 将请求参数做了处理,得到的是字典格式的,因此排序会打乱,依据字典排序规则
    data = request.json
    print(data)
    print(type(data))
    # 如果这里的key服务端写错了,客户端请求时,就会出现500
    username = request.json['username']
    print(username)
    return 'hello world'

6、Get请求:request.args.get()

6.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
	# 可以获取单个的值
    username = request.args.get("username")
    print(username)

    return 'hello world'

6.2 执行结果

服务端拿到了username的值“cc”
在这里插入图片描述

7、Get请求:request.args.to_dict()

7.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
	# 可以获取get请求的所有参数,返回值是ImmutableMutiDict(不可变的多字典)类型
    i = request.args
    print(i)
    # 将获得的参数转化成字典
    j =  i.to_dict()
    print(j)
    print(type(j))
    print(j["username"])
    return 'hello world'

7.2 执行结果

在这里插入图片描述

8、模拟请求报错

8.1 500 Internal Server Error

当服务端key写错时,就会报500错误,例如可以把key username改成usename,运行后看下效果。
在这里插入图片描述在这里插入图片描述

8.2 404 Not Found

仅创建了实例,并没有视图函数,启动socket服务后,访问地址就会报404。或者请求url填写错误。

from flask import Flask

# 创建一个flask实例
app = Flask(__name__)

if __name__ == '__main__':
    app.run()

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

战术的勤奋,弥补不了战略的重大缺陷

战术的勤奋,弥补不了战略的大缺陷 战略的懒惰,遍地都是 王兴说过:人为了逃避思考可以干任何事 趣讲大白话:局部优秀,改变不了整体 【趣讲信息科技252期】 **************************** 中小企业顶顶层设计薄弱 这也是…

个人对智能家居平台选择的思考

本人之前开发过不少MicroPython程序,其中涉及到自动化以及局域网控制思路,也可以作为智能家居的实现方式。而NodeMCUESPHome的方案具有方便添加硬件、容易更新程序和容量占用小的优势,本人也查看过相关教程后感觉部署ESPHome和编译固件的步骤…

计算机视觉一 —— 介绍与环境安装

傲不可长 欲不可纵 乐不可极 志不可满 一、介绍 研究理论和应用 - 研究如何使机器“看”的科学 - 让计算机具有人类视觉的所有功能 - 让计算机从图像中,提取有用的信息,并解释 - 重构人眼;重构视觉皮层;重构大脑剩余部分 计…

Vue3 —— to 全家桶及源码学习

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 前言 本篇主要学习几个 api 及相关源码&#xff1a; toReftoRefstoRaw 一、toRef toRef(reactiveObj, key) 接收两个参数&#xff0c;第一个是 响应式对象…

DB-Engines 排名调查

目录 一、理论 1.DB-Engines排名 一、理论 1.DB-Engines排名 &#xff08;1&#xff09;概念 DB-Engines排名是数据库领域的流行度榜单&#xff0c;它对全球范围内的419款数据库&#xff08;截至2023年8月&#xff09;进行排名&#xff0c;每月更新一次&#xff0c;排名越靠…

pythonocc进阶学习:投影projection

1.点 到 线,&#xff08;直线,曲线&#xff09;等上的投影 staticmethod # 点到Lin的投影 def Project_Pnt_To_Lin(p: gp_Pnt, lin: gp_Lin):Edge BRepBuilderAPI_MakeEdge(lin).Edge()curve BRep_Tool.Curve(Edge)proPnt GeomAPI_ProjectPointOnCurve(p, curve[0])Neares…

unable to write symref for HEAD: Permission denied

今天从gitee上面克隆项目到本地时报错如下 warning: unable to unlink ‘D:/IDEAcode/ruiji1.0/.git/HEAD.lock’: Invalid argument error: unable to write symref for HEAD: Permission denied 解决方法&#xff1a;将要存放项目的文件夹权限修改为完全控制 原先权限&…

财务管理系统javaweb会计账房进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 财务管理系统javaweb java,Struts2,bootstrap,mysql,…

FastAPI和Flask:构建RESTful API的比较分析

Python 是一种功能强大的编程语言&#xff0c;广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比&#xff0c;探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…

如何用SOLIDWORKS Simulation 避免共振现象

零件都有它的固有振动频率&#xff0c;称之为共振频率。当零部件的固有频率和激励频率相近时&#xff0c;对零部件的破坏是非常严重的&#xff0c;这就是我们说的共振。频率分析是设计师日常工作常见的设计验证。 今天给大家分享的是Simulation的频率分析操作方法&#xff1a; …

轻松预约,尽享美食,详解餐厅预约小程序的设计与实现

随着智能手机的普及和人们生活水平的提高&#xff0c;餐厅预约已经成为人们日常生活中的一部分。为了更好地满足人们的需求&#xff0c;许多餐厅开始使用小程序来提供更方便快捷的预约服务。本文将介绍如何制作一款餐厅预约小程序的详细步骤。 1. 进入乔拓云网后台&#xff0c;…

跟禹神VUE——组件间的通信方式(props配置项、组件间自定义事件、全局事件总线、消息订阅与发布、VUEX)

一、通过props配置项传递数据&#xff08;适用于父组件给子组件传递数据&#xff09; 父组件向子组件传递数据&#xff1a; 父组件代码&#xff1a;在子组件的标签中传递数据 <template><div><h2>学校名称&#xff1a;{{schoolName}}</h2><!-- 方…

kafka是有序的吗?如何保证有序?

首先&#xff0c;Kafka无法保证消息的全局有序性&#xff0c;这是因为Kafka的设计中允许多个生产者并行地向同一个主题写入消息。而且&#xff0c;一个主题可能会被划分为多个分区&#xff0c;每个分区都可以在独立的生产者和消费者之间进行并行处理。因此&#xff0c;生产者将…

ABC300

ABC300E 题面 思路 对于投骰子&#xff0c;最后一步可能得到1、2、3、4、5、6&#xff0c;那么对应的最后一步之前的数是n/1、n/2、n/3、n/4、n/5&#xff0c;n/6。并且每个数字&#xff08;1、2、3、4、5、6&#xff09;得到的概率是一样的&#xff0c;即为1/6。 也就是F(n…

CC++内存管理

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;c内存管理方式new/delete 操作内置类型new和delete操…

redis的持久化

第一章、redis的持久化 1.1&#xff09;持久化概述 ①持久化可以理解为将数据存储到一个不会丢失的地方&#xff0c;Redis 的数据存储在内存中&#xff0c;电脑关闭数据就会丢失&#xff0c;所以放在内存中的数据不是持久化的&#xff0c;而放在磁盘就算是一种持久化。 ②为…

misc学习(1)Bugku-社工-进阶收集

新手一枚&#xff0c;参考文献如下&#xff1a; Bugku&#xff1a;社工-进阶收集_bugku 社工 进阶收集_FW_ENJOEY的博客-CSDN博客 照片如图所示&#xff1a; 线索线&#xff1a; 1.百度识图 发现是大雁塔 2.主角家距离大雁塔一共有七站地铁&#xff0c;其中要进行中转。 同时…

剑指Offer68-I.二叉搜索树的最近公共祖先 C++

1、题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也…

uni——月份选择(横向滑动tab,横向滚动选择日期)

案例展示 案例代码 已封装成组件使用 <template><view><view class"tabBox"><scroll-view scroll-x"true" :scroll-left"scrollLeft" :scroll-with-animation"true"><view class"box"><…

STM32--EXTI外部中断

前文回顾---STM32--GPIO 相关回顾--有关中断系统简介 目录 STM32中断 NVIC EXTI外部中断 AFIO EXTI框图 旋转编码器简介 对射式红外传感器工程 代码&#xff1a; 旋转编码器工程 代码&#xff1a; STM32中断 先说一下基本原理&#xff1a; 1.中断请求发生&#xff1a…