软件测试|测试平台开发-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.mzph.cn/news/603900.shtml

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

相关文章

Golang-strconv库学习笔记

前言: strconv库是go官方提供的一个标准包,主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具,进行学习记录。学习重点是其中的内置方法。 本文分为Atoi,Format系列,Parse系列,Append系列,…

obs推流失败问题解决

点击开始直播,出现上图的问题 【解决办法】需要升级显卡驱动 使用360驱动大师升级 点击升级 他会先备份再升级 安装完成需要重启

【LMM 014】NExT-GPT:能够输入和生成任意模态的多模态大模型

论文标题:NExT-GPT:Any-to-Any Multimodal Large Language Model 论文作者:Shengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, Tat-Seng Chua 作者单位: NExT Lab, National University of Singapore 论文原文:https://arxiv.org/abs…

Veeam Backup Replication介绍

新钛云服已累计为您分享781篇技术干货 veeam 提供了一种全面、灵活和高效的数据保护解决方案,可以使用 VeeamBackup & Replication 执行以下数据保护和灾难恢复任务: 创建 VM 和物理机备份 还原物理机、VM、 磁盘和文件 验证备份并准备恢复 创建…

Hive SQL / SQL

1. 建表 & 拉取表2. 插入数据 insert select3. 查询3.1 查询语句语法/顺序3.2 关系操作符3.3 聚合函数3.4 where3.5 分组聚合3.6 having 筛选分组后结果3.7 显式类型转换 & select产生指定值的列 4. join 横向拼接4.1 等值连接 & 不等值连接4.2 两表连接4.2.1 内连…

synchronized、volatile关键字

Java中的synchronized关键字 synchronized关键字介绍 synchronized块是Java提供的一种原子性内置锁,Java中的每个对象都可以把它当作一个同步锁来使用,这些Java内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。 线程的执行代码在进入…

Linux之Ubuntu环境Jenkins部署前端项目

今天分享Ubuntu环境Jenkins部署前端vue项目 一、插件安装 1、前端项目依赖nodejs,需要安装相关插件 点击插件管理,输入node模糊查询 选择NodeJS安装 安装成功 2、配置nodejs 点击后进入 点击新增 NodeJS 配置脚手架类型:如果不填 默认npm …

XAgent调研

文章目录 1 简介2 快速测试 Quick Start3 结构分析 1 简介 XAgent(链接)是一个开源的,基于大语言模型的agent构建框架;其目标是构建出能够辅助人类处理各类任务的自动助手 定位:一个全能的,自动的辅助agen…

Transformer - Attention is all you need 论文阅读

虽然是跑路来NLP,但是还是立flag说要做个project,结果kaggle上的入门project给的例子用的是BERT,还提到这一方法属于transformer,所以大概率读完这一篇之后,会再看BERT的论文这个样子。 在李宏毅的NLP课程中多次提到了…

【LeetCode】1341. 电影评分

表:Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 title 是电影的名字。表&#xff1a…

深入浅出XTTS:Oracle数据库迁移升级利器

演讲大纲: 1. 什么是XTTS 2. 适用场景 3. XTTS的基本操作步骤 4. XTTS案例分享 今天主要跟大家分享一下XTTS,在网上曾看过相关讨论,但发现按网上讲的那些去实际操作的话,还是会遇到一些坑,并不能实际落下来,所以今天想跟大家分享一些实战干货. 一、什么是XTTS …

LeetCode 29. 两数相除

两数相除 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-…

linux高级管理——Squid代理

一、squid服务基础: 1.1缓存代理的概述: 代理的工作机制 当客户机通过代理来请求Web页面时.指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中…

web学习笔记(十一)

目录 1.数据类型 1.1数据类型分类 (1)简单(基本)数据类型 (2)复杂(特殊)数据类型 1.2判断数据类型的方法 (1)常规判断方法: (2…

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JO…

Kafka_02_Producer详解

Kafka_02_Producer详解 ProducerProducerRecordSend&Close实现原理ProducerInterceptorSerializerPartitioner 事务 Producer Producer(生产者): 生产并发送消息到Broker(推送) Producer是多线程安全的(建议通过池化以提高性能)Producer实例后可发送多条消息(可对应多个P…

2024--Django平台开发-Django知识点(四)

1.知识回顾 创建项目&#xff1a;新项目、别人项目、新版版、老版本 项目目录&#xff08;v1.0版本&#xff09; 路由系统 常见路由编写加粗样式 /index/ 函数 /index/<str:v1> 函数 re_path(ryy/(\d{4})-(\d{2})-(\d{2})/, views.yy), re_path(ryy/(?…

科研上新 | 第4期:语言-音乐对比预训练;查找表实现的神经网络推理;大模型时代重新定义搜索框架

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

什么是ajax,为什么使用ajax!

前言&#xff1a; 要学习一门新的、技术之前&#xff0c;首先我们要了解一下他是什么&#xff0c;为什么使用&#xff0c;有什么好处&#xff0c;该怎么理解。现在就从下文开始了解吧 什么是ajax: Ajax即“Asynchronous Javascript And XML”(异步JavaScript 和XML)&#xff0…

监控API的指标

监控服务器已经是常态了&#xff0c;但是监控API的表现是啥意思呢&#xff1f;还有监控指标&#xff1f;今天就来看看如何监控API。 正如监控应用程序以确保高质量性能一样&#xff0c;也必须监控API。 API是应用程序相互通信的管道。更具体地说&#xff0c;API提供了一种方法…