软件测试|测试平台开发-Flask 入门:编写第一个简单 Web 应用

简介

Flask 是一个轻量级的 Python Web 框架,它使得创建 Web 应用变得简单快捷。相比于Django框架,它具有以下的优点:

  • 轻:Flask 是一个轻量级的 Web 框架,使用 Python 语言编写
  • 易:较其他同类型框架更为灵活、轻便且容易上手
  • 快:小型团队在短时间内就可以完成功能丰富的中小型网站或 Web 服务的实现

所以我们的测试平台选用flask来作为后端开发框架。

本文将从零开始编写第一个 Flask 应用。在这个入门项目中,我们将创建一个简单的 Web 应用,展示一条欢迎消息。

安装Flask

Flask是一个python的第三方库,所以安装的命令为:

pip install flask

导入flask模块,如下:

import flask

flask demo

安装完成之后,我们就可以来编写我们的第一个flask脚本了,脚本代码如下:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_flask():return 'Hello Flask!'if __name__ == '__main__':app.run()

脚本解析

  1. 导入flask.Flask
from flask import Flask
  1. 创建实例
app = Flask(__name__)

实例化创建一个 Flask 应用,第一个参数app是 Flask 应用的名称,__name__ 是一个标识 Python 模块的名字的变量:

  • 如果当前模块是主模块,那么此模块名字就是 __main__
  • 如果当前模块是被 import 的,则此模块名字为文件名
  1. 装饰器
@app.route('/')
def hello_flask():return 'Hello Flask!'
  • 定义函数 hello_flask,它返回一段 html 文本
  • app.route(’/’) 返回一个装饰器,装饰器来为函数 hello_flask 绑定对应的 URL(路由)
  • 当用户在浏览器访问这个 URL 的时候,就会触发这个函数,获取返回值
  1. 入口函数
if __name__ == '__main__':app.run() 

如果当前模块是主模块,则变量 __name__ 为 '__main__,此时调用 run() 方法启动 Flask 应用。

运行脚本,控制台输出如下:

* Serving Flask app 'flask_demo'* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [20/Jul/2023 14:56:13] "GET / HTTP/1.1" 200 -

浏览器访问127.0.0.1,页面如下:

修改监听地址和端口

默认访问的主机地址是 127.0.0.1,默认端口是 5000,我们可以对监听的地址和端口进行修改,如下:

if __name__ == '__main__':app.run(host = '0.0.0.0', port = 8888)

再次运行,如下:

 * Serving Flask app 'flask_demo'* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:8888* Running on http://192.168.5.143:8888
Press CTRL+C to quit

总结

在本文中,我们创建了一个简单的 Web 应用,并通过访问根 URL 来显示欢迎消息。Flask 是一个强大而简单的 Web 框架,我们可以通过学习更多功能和概念来构建更复杂的 Web 应用程序。思维导图如下:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 使用Sprite绘制一条自定义图片的线

Unity 使用Sprite绘制一条自定义图片的线 前言项目场景布置代码编写总结 运行效果感谢 前言 遇到一个需要绘制自定义形状的需求。那只能利用Sprite来绘制一条具有自定义图片的线,通过代码动态设置起点、终点以及线宽,实现灵活的线条效果。 项目 场景…

spring事务默认传播机制REQUIRED的试验(手动开启事务代码+feign远程调用)

transactional注解,默认啥都不指定的时候,我们使用的就是PROPAGATION_REQUIRED这种方式。 PROPAGATION_REQUIRED:业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自…

NPS 内网穿透安装

NPS 内网穿透安装 NPS分为服务端和客户端,对应的不同操作系统软件可以在GitHub RELEASES自行选择下载。 服务端搭建 由于个人非企业级使用,为了方便直接使用docker安装 1.docker运行 (注意需要提前下载conf文件,或者将镜像中文件copy出来…

Long类型转换精度丢失问题解决

问题: 启动前端项目 页面传递的ID 和数据库保存的ID不一致 原因:给前端返回的id为long类型,在转换json传递到前端以后精度丢失,所以前端给我们的id也是丢失精度的id,不能查询数据。 因为js数字类型最大长度为16位,而java的long类…

Unity 0GC或者最大限度降低GC方案

文章目录 GC带来的问题性能瓶颈玩家体验受损 优化关键点1. **对象池技术**:2. **内存管理优化**:3. **UGUI优化**:4. **ECS架构下的优化**:5. **资源管理**:6. **自定义数据结构与算法**:7. **开启增量GC&a…

三菱plc学习入门(二,三菱plc指令,触点比较,计数器,交替,四则运算,转换数据类型)

今天,进行总结对plc的学习,下面是对plc基础的学习,希望对读者有帮助,欢迎点赞,评论,收藏!!! 目录 触点比较 当数据太大了的时候(LDD32位) CMP比…

贯穿设计模式-享元模式思考

写享元模式的时候,会想使用ConcurrentHashMap来保证并发,没有使用双重锁会不会有问题?但是在synchronize代码块里面需要尽量避免throw异常,希望有经验的同学能够给出解答? 1月6号补充:没有使用双重锁会有问…

lv14 ioctl、printk及多个此设备支持 6

1 ioctl操作实现 对相应设备做指定的控制操作(各种属性的设置获取等等) long xxx_ioctl (struct file *filp, unsigned int cmd, unsigned long arg); 功能:对相应设备做指定的控制操作(各种属性的设置获取等等) 参数…

ssm基于Java Web的怀旧唱片售卖系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装怀旧唱片售卖系统软件来发挥其高效地信息处理的作用&#x…

【STM32学习】硬件CRC与传统CRC-32计算的不同点

硬件CRC与传统CRC-32计算的不同点 1、stm32的硬件CRC32与传统CRC-32有何不同?2、解决办法 1、stm32的硬件CRC32与传统CRC-32有何不同? ①STM32F103的硬件CRC校验是对整个32位字进行CRC计算,传统的CRC-32是逐字节的计算。 ②STM32的硬件CRC32的…

C#,入门教程(09)——运算符的基础知识

上一篇: C#,入门教程(08)——基本数据类型及使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123906998 一、算术运算符号 算术运算符号包括:四则运算 加 , 减-, 乘*, 除/与取模%。 // 加法,运算 int va 1 …

【JavaSE】Java中的反射动态代理

本篇文章整理的内容来源于: 反射原理 文章目录 一. 动态代理1. 优点2. 动态代理三要素3. 创建代理对象并使用 二. 反射1. 什么是反射2. 获取字节码文件对象的三种方式(1) Class.forName()获取 (源代码阶段)(2) 通过class属性获取(3) 通过对象获取字节码文件对象 3. 获取构造方…