[Flask笔记]一个完整的Flask程序

news2024/9/18 23:50:33

前面讲过Flask是一个轻量级Web开发框架,为什么说是轻量级的呢,因为它用短短几行代码就能运行起来,我们一起来看看最简单的flask框架。

安装Flask

在看Flask框架之前我们需要先安装flask模块,学过python的肯定都知道,flask模块安装其实很简单,直接使用命令

pip install flask

就可以安装好了,这里要提一点,如果你安装模块时,遇到下载失败的情况,大部分是因为python默认使用官方的下载模块地址下载,而这个地址在国内访问有时不太稳定,这里推荐使用清华的下载源下载,速度能快很多,也不会经常出现报错、超时问题。

https://pypi.tuna.tsinghua.edu.cn/simple

使用方法也很简单,用两种方法,第一种是在pip中加个-i的参数,后面加网址,就会从这个地址下载模块,如下

pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

上面这种方法只能是临时下载使用,不能让下载源永久变更,这里提供另一种方法,去变更默认下载源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

变更后,可通过pip config list查看是否更改成功,如果更改成功,会显示如下

(.venv) ❯❯ pip config list
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'

一个最小且完整的Flask程序

Flask安装成功后,我们就可以看一个示例了,这是一个完整的flask程序,也是flask运行起来需要的小单元,我们将以下代码保存到一个py文件中,如my_flask.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World!"

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

如上面的代码所示,短短10行代码,就可以让flask跑起来,所以说flask是一个轻量级的web框架。别看上面的代码短,但是它五脏俱全,包含了flask运行起来的所有内容,应用实例、路由和视图函数就构成了一个最简单的Flask程序

应用实例

应用实例,实际上就是Flask的应用对象,这里说的对象可不是你的女朋友,而是一个可以包含请求处理、路由分发、视图函数调用的Web应用核心,也就是那句app = Flask(__name__),如果我们去看Flask这个实例的源码就能发现,里面包含了很多内容,如运行启动参数、路由规则、收发请求的方式定义等等,这里就不详细展开说了。

路由

路由是用来处理URL和函数之间对应关系的。这里我们就必须要讲下web的整个工作原理,来方便理解,首先看下图
在这里插入图片描述
Web浏览器发起请求,Web服务器收到请求并把请求发送给Flask应用程序,Flask应用程序收到请求的URL后,找对应的处理函数,这就是整个路由的工作原理。
而对应到上面的程序,就是那个函数

@app.route('/')
def index():
    return "Hello, World!"

如果python学的相对深入一点儿的话,就能知道上面代码中的@app.route('/')是一个装饰器,用来注册视图函数,其后括号中的内容就是要使用的路径,'/'就表示根路径,即http://127.0.0.1:5000;如果改为‘/login/’就表示使用login路径,即http://127.0.0.1:5000/login/;如果写成'/user/<name>'就变成了动态可变路由,即那个<name>会根据传输的内容动态变化,比如http://127.0.0.1:5000/user/jay,这个jay就需要浏览器附倒路由中。
这是Flask中给做了简化,方便使用,实际传统方式定义路由并非使用装饰器,由于传统方式已经不常用,这里就不详细说了。
路由这里还有一点必须提下,那就是Flask的动态可变路由仅支持string、int、float、path几种类型,比如上面的<name>就是用的string类型,这个类型默认是不用写出来的,可以匹配除斜线(/)之外的任何字符序列。而其他几个类型,如果需要识别,就要写出类型,如'/path/<path:my_path>'

视图函数

视图函数,就是处理入站请求的函数,也就是路由中定义的那个函数

def index():
    return "Hello, World!"

上面这个函数,就是所谓的视图函数。它是用来处理进来的请求,并返回响应的。

响应

上面提到了返回响应,那响应是什么呢?响应就是视图函数中返回的值,可以是字符串,也可以是复杂的表单,还可以用Flask提供的render_template()函数来返回一个html,同时响应还可以直接使用redirect()函数将路由重定向。

启动

上面将了Flask程序的五脏,还少一个入口让Flask运行起来,也就是这个代码中的最后2行

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

第一行if __name__ == '__main__':,学过python的都知道这是python的入口方式,也就是将当前文件或模块当作主程序直接运行。
第二行app.run(debug=True)则是来调用上面创建的Flask对象,并执行run()函数,让Flask运行起来,而其中的debug是作为参数,传给run()函数的,让Flask知道是在调试模式下启动,在调试模式中Flask会自动加载 重载器 和 调试器。
然后我们到命令行,进入my_flask.py文件的目录,命令行输入python my_flask.py即可启动程序,如下图所示。
在这里插入图片描述
我们打开浏览器输入http://127.0.0.1:5000即可看到Hello, World!,如下图
在这里插入图片描述

到此,我们的这个完整的Flask程序应有的概念就都讲完了,当然,这都是最基础的内容,要想完整开发一个基于flask的web应用还有很多要学习的,如模版、数据库、前端技术等等,笔者也是边学边写,也是借鉴费曼学习法,让自己记得更牢,如果写的过程中有什么疏漏和错误,还请各位指出。

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

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

相关文章

python3读取shp数据

目录 1 介绍 1 介绍 需要tmp.shp文件和tmp.dbf文件&#xff0c;需要安装geopandas第三方库&#xff0c;python3代码如下&#xff0c; import geopandas as gpdshp_file_path "tmp.shp" shp_data gpd.read_file(shp_file_path) for index, row in shp_data.iterro…

久期分析与久期模型

目录 一、久期分析的理论原理 二、数据准备 三、Stata 程序代码及解释 四、代码运行结果 一、久期分析的理论原理 久期&#xff08;Duration&#xff09;是衡量债券价格对利率变动敏感性的重要指标。它不仅仅是一个简单的时间概念&#xff0c;更是反映了债券现金流回收的平均…

最新 Kubernetes 集群部署 + Contranerd容器运行时 + flannel 网络插件(保姆级教程,最新 K8S 1.28.2 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…

BGP第三日谈

今日所用拓扑 先补充昨日没有讲到的知识点&#xff1a; 1.IBGP有更新源检测机制 这种机制使得BGP路由在IBGP邻居间传递时下一跳地址仍然保持不变&#xff0c;但是IBGP却没有去往下一跳地址的路由&#xff0c;所以我们需要手动将IBGP邻居间传递的BGP路由下一跳地址转成与IBGP…

星辰考古:TiDB v4.0 进化前夜

前情回顾TiDB v4 时间线TiDB v4 新特性 TiDBTiKVPDTiFlashTiCDCTiDB v4 兼容性变化 TiDBTiKVPD其他TiDB 社区互助升级活动TiDB 3.0.20 升级到 4.0.16 注意事项升级速览直观变化总结素材来源&#x1f33b; 往期精彩 ▼ 前情回顾 在前面的章节中&#xff0c;我们共同梳理了 TiDB …

【ARM】CCI缓存一致性整理

目录 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置​编辑 3.CCI500内部结构​编辑 4.功能描述 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置 3.CCI500内部结构 Transaction Tracker&#xff08;TT&#xff09;是用来解决一致性和ordering问题的&#xff0c;它…

光伏仿真系统推荐

在全球能源转型和绿色能源发展的背景下&#xff0c;光伏行业作为重要的绿色能源组成部分&#xff0c;其智能化、数字化的发展显得尤为关键。光伏仿真系统作为提升光伏项目设计、运维效率的重要工具&#xff0c;在行业中扮演着不可或缺的角色。在众多光伏仿真系统中&#xff0c;…

构建工具webpackvite

1. webpack 使用步骤: 1.初始化项目yarn init -y&#xff08;也可以是npm其他包管理工具&#xff09; 2.安装依赖webpack webpack-cli&#xff1a;yarn add -D webpack webpack-cli&#xff08;-D是只用于开发时候加&#xff09; 3.在项目中创建src目录&#xff0c;然后编写代…

mov视频怎么改成mp4?把mov改成MP4的四个方法

mov视频怎么改成mp4&#xff1f;选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉&#xff0c;但在某些情况下&#xff0c;它并非最佳选择&#xff0c;因为使用mov格式可能面临一些挑战。MP4格式在各种设备&#xff08;如…

Suricata引擎二次开发之命中规则定位

二开背景 suricata是一款高性能的开源网络入侵检测防御引擎&#xff0c;旨在检测、预防和应对网络中的恶意活动和攻击。suricata引擎使用多线程技术&#xff0c;能够快速、准确地分析网络流量并识别潜在的安全威胁&#xff0c;是众多IDS和IPS厂商的底层规则检测模块。 前段时间…

Python精神病算法和自我认知异类数学模型

&#x1f3af;要点 &#x1f3af;空间不确定性和动态相互作用自我认知异类模型 | &#x1f3af;精神病神经元算法推理 | &#x1f3af;集体信念催化个人行动力数学模型 | &#x1f3af;物种基因进化关系网络算法 | &#x1f3af;电路噪声低功耗容错解码算法 &#x1f4dc;和-…

下载设计免抠元素,就上这6个网站,免费下载!

寻找免费PNG免抠素材网站是创意设计者们探索的重要一环。这些网站提供了丰富的PNG格式素材&#xff0c;去除了背景&#xff0c;方便在不同项目中使用。精心挑选了6个免费PNG免抠素材网站&#xff0c;它们提供了高品质的素材资源&#xff0c;无论是个人设计还是商业项目&#xf…

Jetson-AGX-Orin 非docker环境源码编译安装CyberRT

Jetson-AGX-Orin 非docker环境源码编译安装CyberRT 1、安装依赖 sudo apt update sudo apt-get install g gdb gcc cmake sudo apt install libpoco-dev uuid-dev libncurses5-dev python3-dev python3-pip python3 -m pip install protobuf3.14.02、下载CyberRT源码 git cl…

从0开始的STM32HAL库学习4

对射式红外传感器计数复现 配置工程 我们直接复制oled的工程&#xff0c;但是要重命名。 将PB14设置为中断引脚 自定义命名为sensorcount 设置为上升沿触发 打开中断 配置NVCI 都为默认就可以了 修改代码 修改stm32f1xx_it.c 文件 找到中断函数并修改 void EXTI15_10_I…

mp3文件导入音乐乱码

在网上下载了beyond的mp3文件&#xff0c;发现看起来没问题&#xff0c;一旦加入到音乐软件就会乱码&#xff0c;看起来说因为音乐文件加载到元数据 思路参考了这个文章 解决Mac电脑音乐显示歌名的乱码问题_音频文件乱码-CSDN博客 不过这个只能解决名称乱码&#xff0c;我发…

Kodcloud可道云安装与一键发布上线实现远程访问详细教程

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 1.前言 本文主要为大家介绍一款国人自研的在线Web文件管理器可道云&#xff0c;…

前端新手小白的React入坑指南

有个小伙伴跟我说&#xff0c;已经毕业了&#xff0c;开始实习了。但公司现在用的还是Vue&#xff0c;领导说是过段时间让他用React做项目&#xff0c;先自己学习起来。 我给他找了一些文档&#xff0c;顺便着呢&#xff0c;反正自己也写博客&#xff0c;自己也写一份吧&#x…

共集电极放大器+共基极放大器+放大器参数总结+单片机(全局/静态/动态变量+LED点阵初识+点亮LED并显示图形)

2024-7-11&#xff0c;星期四&#xff0c;18:38&#xff0c;天气&#xff1a;雨&#xff0c;心情&#xff1a;晴。终于下雨了&#xff0c;感受到了久违的凉爽&#xff0c;没有什么特殊的事情发生&#xff0c;继续学习啦&#xff0c;加油加油&#xff01;&#xff01;&#xff0…

君子签电子合同推动企业人事管理变革,降本提效

在日益复杂的人力资源管理领域&#xff0c;合同签署与管理成为HR面临的一大挑战。面对庞大的合同量、繁琐的审批流程、频繁的岗位变动以及离职时的合同管理难题&#xff0c;传统方式已难以满足高效、安全、合规的需求。 君子签针对HR面临的挑战和需求&#xff0c;打造智能合同…

如何定量选择孔销基准?-DTAS来帮你!

在当今快速发展的工程领域&#xff0c;公差仿真的作用日渐重要&#xff0c;在公差仿真中&#xff0c;基准体系的选择对于最终结果更是至关重要。基准体系不同可能导致仿真过程中的参数计算、误差分析以及最终的工程设计都有所不同。基准体系作为评估和比较的参照&#xff0c;直…