Python Flask 编程 | 连载 03 - Flask 请求

使用Python Flask遍历和打印request.headers 在Flask应用程序中,我们可以通过request对象访问客户端发送的HTTP请求的信息,包括请求头(headers)。在上面的代码中,我们创建了一个Flask应用程序,并定义了一个名为index的路由。在index路由中,我们访问了request.headers对象,并使用一个循环遍历了所有的请求头,并打印了每个请求头的名称和值。这是一个简单的示例,演示了如何使用Flask遍历和打印request.headers。请注意,request.headers是一个特殊的字典对象,它包含了所有的请求头信息。 阅读详情

一、Flask 请求

上下文对象 context,类似容器,存储了一些关键信息

  • 应用上下文
  • 请求上下文
  • 在分派请求之前激活应用上下文和请求上下文
  • 请求处理完之后将其删除

应用上下文对象 application context

应用上下文对象有两个,分别是 current_app 表示当前应用的实例以及 g 表示处理请求时临时存储对象,每次请求都会重设这个变量,并且 g 对象时线程隔离的,使用g对象需要导入,g 既 global。

在 app.py 中的 index 视图函数中打印出 current_app 和 g

python
复制代码
from flask import current_app, g

@app.route('/')
def index():
    print(current_app)
    print(type(current_app))
    print(dir(current_app))

    print(g)
    print(type(g))
    print(dir(g))

    print(current_app is app)

    info = {
        'message': "这是存在message变量中的信息",
    }
    return render_template('index.html', info=info)

image.png

current_app 是一个 Flask 类,包含了路由、响应、设置、模板等各种方法。

g 临时对象中包含了 get 方法、pop 方法和 setdefault 方法,可以用来保存和删除某些临时信息。

请求上下文

请求上下文对象有两个,分别是:

  • request 对象:请求对象,封装了客户端发出的HTTP请求

    • method:请求类型,如 GET、POST 等
    • form:POST 请求数据,dict类型
    • args:GET 请求的数据,dict类型
    • values:POST 请求和 GET 请求数据集合,dict类型
    • files:上传文件的数据,dict 类型
    • cookies:请求中存储的 cookie,dict 类型
    • headers:HTTP 请求头
  • sessio 对象:用户会话,是一个字典类型,存储在服务端,请求之间数据共享

新增视图函数 get_params,获取 get 请求中的参数

python
复制代码
from flask import request

@app.route("/params")
def get_params():
    params = request.args
    print('请求中传入的参数为:{}'.format(params))
    print('传入参数的格式为:{}'.format(type(params)))
    print('是否是一个字典类型:{}'.format(isinstance(params, dict)))
    print('params中name的值为:{}'.format(params.get('name')))
    print('params中address的值为:{}'.format(params.get('address')))
    return "SUCCESS"

重启应用,在浏览器输入 http://127.0.0.1:5000/params?name=stark&address=NY

image.png

当请求传递参数为空时,输出为 None,也可以给没有传值的参数设置默认值,在 get_params 视图函数中增加代码

python
复制代码
nickname = request.args.get('nickname', 'IronMan')
print('params中nickname的值为:{}'.format(nickname))

新增视图函数 get_headers,解析请求头中的IP地址

python
复制代码
@app.route('/headers')
def get_headers():
    # 获取请求头中的Host
    headers = request.headers
    print("获取到的请求头为:{}".format(headers))
    print('请求头的数据类型为:{}'.format(type(headers)))
    host = request.host
    print('请求中的host为:{}'.format(host))
    print('请求中的host的数据类型为为:{}'.format(type(host)))
    host_url = request.host_url
    print('请求中的host_url为:{}'.format(host_url))

    # 获取远程IP地址
    remote_addr = request.remote_addr
    print('请求的远程IP地址为:{}'.format(remote_addr))

    # 获取代理
    user_agent = request.user_agent
    print('请求代理为:{}'.format(user_agent))
    return 'SUCCESS'

image.png

image.png

请求钩子函数

请求钩子函数可以对请求进行鉴权或者限制某些 IP 的恶意请求:

  • before_first_request,在服务器初始化后第一个请求到达前执行,只会执行一次
  • before_request,每一个请求到达前执行
  • after_request,每次请求处理完成之后执行,如果请求中出现了异常,则不执行
  • teardown_request,每次请求处理完之后执行,如果请求过程中出现了异常,也能执行
  • errorhandler,对异常进行处理,当视图函数中中抛出了错误, 并且错误码能够匹配上注册的 errorhandler 的错误码时会被触发

新增四个视图函数

python
复制代码
@app.before_first_request
def first_request():
    '''服务器启动后第一个请求到达'''
    print('服务器启动后的第一个请求')


@app.before_request
def before_request():
    print('每个请求处理前都会运行的方法')

重启服务后,浏览器输入 http://127.0.0.1:5000/params?name=stark&address=NY

image.png

清除控制台的日志,再次请求。

image.png

after_request 和 teardown_request 两个钩子函数必须包含一个 response 作为参数,after_request 必须返回 response,teardown_request 则不要求,因为这两个参数是请求处理完之后执行,可以对请求响应做一些处理后返回给用户,如对异常或者报错进行封装处理。

再增加两个视图函数

python
复制代码
@app.after_request
def after_request(response):
    print(response.headers)
    print('每个请求处理后都会运行的方法,有异常不执行')
    return response


@app.teardown_request
def teardown_request(response):
    print('每个请求处理前都后运行的方法,有异常也会执行')
    return response

重启服务,浏览器输入 http://127.0.0.1:5000/params?name=stark&address=NY

image.png

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

优快云大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集 本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。 阅读详情

相关推荐

KiCad 7.0 + 嘉立创打样:从原理图到实物,打造你的双LLCC68 LoRa串口透传板

本文详细介绍了使用KiCad 7.0设计双LLCC68 LoRa串口透传板的完整流程,从原理图设计到嘉立创打样。重点解析了AVR+LLCC68组合的优势、双模块布局的电磁兼容设计、SPI接口配置及射频走线技巧,并提供了实测数据和常见问题解决方案,帮助开发者高效实现物联网设备的低功耗远距离通信。

weixin_28693447的博客 262

解决Flask中使用print不在控制台输出的问题

另一种解决方法是修改Flask应用程序的日志级别。默认情况下,Flask的日志级别为WARNING,即只会记录警告信息及以上级别的日志。我们可以将日志级别修改为DEBUG,以便在控制台上打印更多的日志信息。在上述示例中,我们通过将日志级别设置为DEBUG,来打印所有级别的日志信息,包括调试信息。

weixin_44170578的博客 3496

拯救者R7000P(2021)装双系统Ubuntu20.04 解决联发科MT7921无线网卡在Ubuntu中不能联网

拯救者R7000P(2021)装双系统Ubuntu20.04/Ubuntu18.04 电脑配置:联想拯救者R7000P CPU:AMD R7-5800H GPU:RTX3060-6G 内存:16GB 固态:500G(原装)+500(加装) 1.做系统盘(本文以Ubuntu20.04为例) 1.下载Ubuntu20.04镜像 直接去Ubuntu官网或者一些国内的镜像去下载都可以,这里给出一个网址https://ubuntu.com/download/desktop,根据需要下载自己学要的Ubuntu版本,后缀

qq_41108639的博客 1万+

flask数据请求,获取数据和响应数据

flask格式

weixin_60677608的博客 1251

STM32与HT7038的高精度电能计量系统设计与实现

本文详细介绍了基于STM32微控制器与HT7038三相电能计量芯片的高精度电能计量系统设计与实现。文章从项目选型出发,深入剖析了硬件电路设计、SPI驱动开发、芯片校准及系统集成等关键环节,为智能电表、能源监控等应用提供了高性价比且稳定的国产化解决方案。

pytorch8learner的博客 390

Yolov5自学笔记之一--从入门到入狱,功能强大不要乱用(实现yolov5的基本功能使用流程及训练自己的数据集)

零基础自学yolov5,学会简单使用和训练自己的数据集,在自己工作中使用

qq_41597915的博客 1万+

flask打印线程信息

# -*- coding: utf-8 -*- import os import sys import threading import traceback import signal import tempfile from datetime import datetime import time import faulthandler def test(): while True...

rubbertree的专栏 569

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1917

2021-10-31flask下的类似print功能-------- 日志系统的使用

logger是FLASK的日志系统,在很多时候他是代替打印查找WEB故障的利器 app.logger.debug('这是调试日志测试') app.logger.warning('这是警告日志测试') app.logger.error('这是错误日志的测试') 其实FLASK是调用了Python自带的logging模块,他的简单实例如下: import logging # 引入logging模块 logging.basicConfig(level=logging.DEBUG,

gaoke11240的博客 1392

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

HSPICE用户必看:用Sigrity Broadband SPICE解决复杂封装建模的3个技巧

本文为HSPICE用户分享了三个使用Sigrity Broadband SPICE解决复杂封装建模难题的实战技巧。通过将宽频带S参数高效转换为时域SPICE模型,能显著提升仿真速度、保障收敛性,并精准分析谐振、返回路径不连续及超多端口PDN等关键问题,助力实现高效稳定的系统级信号与电源完整性分析。

metal的博客 601

Flask后端实践 连载二 yaml配置logger及logger使用

Flask yaml配置logger以及logger使用,使用yaml文件来配置logger,以及logger的使用。基于python3编写。 tips: - 上一篇文章[《Flask后端实践 连载一 加载yaml配置文件》](https://blog.youkuaiyun.com/qq_22034353/article/details/88591681)主要介绍了Flask如何加载yaml文件配置,这篇文章则是进一步使用yaml文件来配置logger及logger的使用。 - 本文基于python3编写

那些年踩过的坑丶 4959

手把手教你学 GPU KMD--1.2:UMD、KMD 与 DDK 的协作关系(下)——权限提升与安全边界

本文探讨了UMD、KMD与DDK协作中的权限提升与安全边界问题。GPU作为强大DMA引擎,必须通过分层权限模型(用户态/内核态)隔离风险,KMD作为守门人对UMD请求进行严格校验。文章详细分析了权限提升路径、安全边界设计(GPU虚拟内存隔离、命令白名单、IOMMU强制隔离等),并列举历史漏洞案例说明安全边界的重要性。现代增强方案包括虚拟化与可信执行环境。核心安全原则是"永远不信任用户态数据",需对所有地址、命令、资源和DMA进行严格管控。

amy_mhd的博客 324

基于Pycharm的Python-flask 的学习分享 03

本文介绍 Flask 中蓝图与拦截器的使用及错误处理。蓝图基于 MVC 模式实现路由模块化,通过创建蓝图实例并注册到应用,可拆分用户、文章等模块路由。拦截器分为全局(拦截所有请求)和模块(仅拦截特定蓝图路由),需通过白名单等思路控制放行逻辑。还讲解了 404、500 错误页面的定制方法,帮助开发者实现 Flask 项目的模块化管理与请求安全控制。

2402_86633703的博客 1074

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python Web 框架-FLASK day03

1.修改配置   app = Flask(__name__,template_folder='muban',static_url_path='/s',static_folder='sta') template_folder 设置模板的保存路径 static_url_path 设置静态文件的访问路径(映射到WEB中的访问路径) static_folder 设置静态文件的保存目录(映...

时光 555

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Flask框架

Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQ

有用的话关个注,点个赞,收个藏🫶。 2084

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python Web 框架-FLASK 03

案列详解 1.修改配置 app = Flask(name,template_folder=‘muban’,static_url_path=’/s’,static_folder=‘sta’) template_folder 设置模板的保存路径 static_url_path 设置静态文件的访问路径(映射到WEB中的访问路径) static_folder 设置静态文件的保存目录(映射到项目中的目录名...

Jameschou的博客 289

03_安装Flask

03 安装Flask,通过本节课程的学习,你将学会使用Miniconda3创建虚拟环境,并在虚拟环境安装Flask。《Flask快速入门教程》人人都能学,小白看得懂学得会系列,跟我学编程,免费领取配套学习资料。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 617

python flask 封装属于自己的api

python flask 封装属于自己的api0x01 demo0x02 测试0x03 解决 WARNING: This is a development server. Do not use it in a production deployment. falsk WSGI 0x01 demo from flask import Flask, jsonify, request # 创建服务 app = Flask(__name__) # 指定接口的访问路径,和支持什么请求方式get,post @app

weixin_40950781的博客 3392

Python Flask教程学习03

主要写了Flask的两个扩展 Flask 邮件(Flask-Mail) Flask Mysql及Flask SQLAlchemy

数据攻城狮的博客 712

flask框架下前端向后端请求数据(ajax)

Flask基本框架 app\ static\ js\ json\ tempaltes\ index.html __init__.py config.py routes.py 1.前端html文件 {% extends "base.html" %} {% block content %} <div style="width:100px;float:left;m...

fxt520的博客 2785

python flask api接口安全_flask api接口

使用swagger作为restful api的doc文档生成——从源码中去提取restful URL接口描述文档初衷记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情。也许多点,也许少点。甚至,接口总是需要适应新需求的,修改了,增加了,这份文档维护起来就很困难了。于是发现了swagger,自动生成文档的工具。swagger介绍首...

weixin_39890102的博客 1259

python视频网站项目_价值2400元的python全栈开发系列Flask Python Web 网站编程视频

2 e/ b4 F1 c' H$ D! X价值2400元的python全栈开发系列Flask Python Web 网站编程视频-优品课堂' z3 _1 Y7 ]6 j4 z# p# r# g* A9 e8 k5 h' V7 w, M$ f6 C6 X* e" J2 N课程目录:% v2 _& D+ L5 _) a$ L; C. C01-计算机基础常识.mp49 T, _9 X9 p+ y4 B7...

weixin_39774556的博客 1万+

Flask-03

SQLAlchemy 通过SQLAlchemy连接数据库 python在MySQL新建表 python在MySQL增删改查 插入表 插入多行 从表中选取(SELECT)数据 从MySQL表中选取(SELECT)数据 选取表中的部分字段, 只取一行 WHERE筛选数据 通配符 防止SQL注入 对结果排序 删除记录 删除表 更新表 限制结果数量 cookie和session flask中使用cookie和session wtforms表单验证 一、表单验证

m0_62497122的博客 616

(学习flask) 03 使用flask-bootstrap

flask-bootstrap集成Bootstrap Bootstrap是Twitter开发的一个开源框架,提供的用户界面组件可用于创建简洁且具有吸引力的网页。使用bootstrap需要(1)引用bootstrap层叠样式表和相关js(2)在代码中实例化所需组件。 安装flask-bootstrap pip install flask-bootstrap flask-bootstrap的实例化 from flask_bootstrap import Bootstrap from flask import

akswyh的博客 3732

Python Flask框架学习03:Flask 环境

Flask安装条件 安装Flask通常需要Python 2.6或更高版本。虽然Flask及其依赖项适用于Python 3(Python 3.3以上版本),但是许多Flask扩展不能正确支持它。因此,建议在Python 2.7上安装Flask。 为开发环境安装virtualenv virtualenv是一个虚拟的Python环境构建器。它可以帮助用户并行创建多个Python环境。因此,它可以避免不同版本的库之间的兼容性问题。 以下命令用于安装virtualenv: pip install vir.

张陈亚的博客 423
上一篇: Python Flask 编程 | 连载 02 - Flask 路由
下一篇: Python Flask 编程 | 连载 05 - Jinja2 模板引擎
Llama-Turbo
博客等级 码龄4年 9901粉丝 2024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值