基于flask的web应用开发——认识@app.route

news2024/11/19 19:29:08

目录

  • 0. 前言
  • 1. flask简介
  • 2. 编写你的第一个网页
  • 3. 运行效果查看
  • 4. 本节小结

0. 前言

本专栏以基于flask实现web前端,即制作一个自己的网页

本节学习路由装饰器@app.route()

操作系统:Windows10 专业版

开发环境:Pycahrm Comunity 2022.3

Python解释器版本:Python3.8

第三方库:flask

1. flask简介

Flask 是一种轻量级的 Python Web 应用框架,它具有简单易用、灵活扩展等特点,适合用于快速开发小型 Web 应用或原型开发。下面是 Flask 的一些主要特点:

  • 简单易用:Flask 框架设计简洁,代码量少,易于入门。

  • 轻量级:Flask 内核简单,不依赖大型的第三方库,可以快速构建应用。

  • 灵活扩展:Flask 提供了丰富的扩展库,可以方便地添加功能,比如表单验证、数据库操作等。

  • RESTful 支持:Flask 支持 RESTful API 开发,可以快速构建 Web 服务。

  • Jinja2 模板引擎:Flask 支持 Jinja2 模板引擎渲染数据,使得前端和后端逻辑分离,代码更加易于维护。

  • Werkzeug WSGI 工具箱:Flask 应用程序使用 Werkzeug 来处理 WSGI,它是一个 Python 的 WSGI 工具箱,支持符合 WSGI 标准的服务器和 Python 应用程序之间的连接。

  • 路由系统:Flask 支持灵活的 URL 路由,可以根据 URL 的不同,返回不同的视图函数或模板。

  • Debug 模式:Flask 中的 Debug 模式可以帮助开发者快速定位问题,打印出有用的错误信息。

如果你想学习 Flask,可以先了解 Flask 的基本概念、路由规则、请求响应、模板渲染、表单处理和数据库操作等方面,然后结合具体案例或项目进行实践。

2. 编写你的第一个网页

安装好flask库之后运行下面这段代码

这个代码创建了一个简单的 Flask 应用程序,包括一个根路由 / 和一个返回字符串 ‘Hello, World!’ 的处理函数。在主程序中,app 对象会运行在本地服务器上,可以使用 python app.py 启动该应用。

from flask import Flask

app = Flask(__name__)

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

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

下面我来深入解释一下上一段 Flask 代码的执行过程:

  1. 导入 Flask 包:from flask import Flask 语句导入了 Flask 包。

  2. 创建 Flask 应用实例:app = Flask(name) 创建一个名为 app 的 Flask 应用程序实例,name 表示当前模块名。

  3. 创建路由处理函数:@app.route(‘/’) 是 Flask 的路由装饰器,用于设定处理 URL 路径为 / 的请求。下一行 def hello(): 是处理函数,用于实现对 / 路径请求的处理逻辑,这里会返回一个字符串 ‘Hello, World!’。

  4. 启动 Flask 应用程序:if name == ‘main’: app.run() 语句会判断当前模块是否为主模块,如果是主模块(也就是当前执行的脚本),则自动启动 Flask 应用程序,等待外部请求。app.run() 方法会在本地的默认地址 http://127.0.0.1:5000/ 启动一个 Web 服务器,开始监听客户端的请求。

  5. 请求和响应:当用户访问 http://127.0.0.1:5000/ 地址时,Flask 会自动把 GET 请求映射到上面定义的 hello 视图函数,并把函数的返回值 ‘Hello, World!’ 转换成 HTTP 响应返回给客户端。

3. 运行效果查看

你的控制台会输出以下字段:
在这里插入图片描述
红字只是提醒你这只是用于测试使用,不要用于实装,我猜是因为没有部署防火墙规则导致安全性不够。

点击http://127.0.0.1:5000就会进入到你的网页之中,由于你设置的根路由之下(“/”)触发hello函数,所以会出现一下结果:
在这里插入图片描述
现在我们对代码进行增加,用它覆盖你原来的代码并且重新运行:

from flask import Flask

app = Flask(__name__)

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

@app.route('/IoT_H2')
def hello_H2():
    return "Hello,IoT_H2"

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

现在你的主界面还是 “Hello, World!”
在这里插入图片描述
如果我们在地址栏后面加入/IoT_H2会发生什么呢?

可以看到出现了预期的效果:
在这里插入图片描述
这是由于下面的代码在起作用:

@app.route('/IoT_H2')
def hello_H2():
    return "Hello,IoT_H2"

如过你输入其他信息将出现404 Not Found,因为你没有配置好路由:
在这里插入图片描述

回到Pycharm,可以看到控制台有出现访问请求、访问者的IP地址以及返回的状态码:
在这里插入图片描述

4. 本节小结

@app.route(‘/’) 是 Flask 的装饰器,用于设定处理 URL 路径为 / 的请求。

Flask 应用的 URL 路由是通过装饰器实现的,实际上是将路由和处理函数进行绑定。比如这里的 @app.route(‘/’) 就表示将 URL 路径为 / 的 GET 请求和下面的 hello() 函数绑定在一起。

/ 表示根路由,即应用的默认入口。在 Flask 应用中,根路由是最基本、最常用的路由之一。

在 @app.route() 装饰器中还可以指定其他的请求方法,比如 POST、PUT、DELETE 等等,在后续的学习中将会具体说明用法

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

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

相关文章

chatgpt赋能python:Python加R:让数据科学更加高效

Python加R:让数据科学更加高效 在过去的几年里,Python和R成为数据科学领域中最受欢迎的编程语言。它们提供了丰富的库和工具,帮助从事数据分析和机器学习的人们更加高效地完成任务。然而,Python和R都有其各自的优缺点。 Python的…

代理IP基础、实际运用,以及如何获取

代理IP是指通过一个中间服务器来转发用户的网络请求,从而在网络上隐藏用户的真实IP地址,或者绕过网络限制以达到访问特定内容的目的。下面是代理IP的一些基础知识: 1、代理IP的分类:代理IP可以分为普匿代理IP、透明代理IP和高匿代…

互联网医院牌照申请的资料以及流程

随着互联网的发展,互联网医院逐渐成为一个热门话题,越来越多的医疗机构开始尝试在互联网上提供医疗服务。然而,想要在互联网上开展医疗服务,必须获得互联网医院牌照。本文将介绍互联网医院牌照申请需要的资料、条件,以…

算法提高-搜索-DFS之剪枝与优化

DFS之剪枝与优化 DFS之剪枝与优化AcWing 165. 小猫爬山AcWing 166. 数独AcWing 167. 木棒AcWing 168. 生日蛋糕 DFS之剪枝与优化 AcWing 165. 小猫爬山 DFS的五种剪枝方法 (1)优化搜索顺序 (2)排除等效冗余 (3&#…

chatgpt赋能python:Python删除目录:如何在项目中正确删除文件夹?

Python 删除目录:如何在项目中正确删除文件夹? 在使用Python语言进行程序开发的过程中,可能会需要删除不再需要的目录,例如缓存和日志文件夹。然而,删除目录需要小心谨慎,避免误删除重要文件或目录。在本文…

chatgpt赋能python:Python列表自动排序

Python列表自动排序 Python是一种流行的编程语言,它有很多有用的内置函数和数据结构。其中一个最常用的数据结构是列表。在Python中,列表是一个有序的集合,可以存储多种类型的元素。列表不仅仅是一个数据结构,它还有一些有用的方…

Flink standalone 集群会话模式部署搭建

环境准备 1、Centos7集群环境搭建 2、flink-1.17.0-bin-scala_2.12.tgz 安装包,下载地址 规划 服务器角色iphadoop01JobManager TaskManager192.168.140.132hadoop02TaskManager192.168.140.133hadoop03TaskManager192.168.140.134 安装 1、下载 flink-1.17.0-…

【Unity3D】边缘检测特效

1 边缘检测原理 边缘检测的原理是:检测每个像素周围的像素亮度差,如果亮度差异较大,就将该像素识别为边缘,并进行边缘着色。 使用过卷积神经网络(CNN)的读者,一定知道卷积运算,笔者之…

储能基础知识【一】

储能基础知识【一】 1、基础名词、概念、对应的英文单词、系统组成2、储能电池系统组成图3、性能指标 1、基础名词、概念、对应的英文单词、系统组成 电池储能系统(Battery Energy Storage System, BESS);电芯(Battery Cell&…

总结887

学习目标: 周目标:强化强3讲,英语背3篇文章并回诵,检测,一套数学模拟题 每日必复习(5分钟) 复习第四讲方程组 学习内容: 暴力英语:背诵《happiness is a journey》每日…

《HTTPS协议原理》

【一】https协议是啥子? https也是一个应用层协议,实在http协议的基础上,引入了一个加密层,http协议的内容都是按照文本的方式进行明文传输的, 这就导致了在传输的过程中出现一些被篡改的情况。 【二】啥是加密&…

操作系统复习3.1.0-内存

内存 程序是由内存放到CPU才可处理,前面一直有提到外存、内存,外存I/O速度十分慢,而内存I/O速度快,CPU I/O速度也快。 因此内存是缓和外存和CPU间I/O速率差异问题 为区分并发环境下程序数据存放地方,就给内存的存储单…

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别? 先了解一下JavaScript 数据类型有哪些? javaScript 中有8种基本的数据类型:7种为基本数据类型,而Object 为复杂数据类型 基本数据类型(原始数据类型&#…

OpenMMLab-AI实战营第二期-人体关键点检测与MMPose

人体关键点检测与MMPose 课程链接:https://www.bilibili.com/video/BV1kk4y1L7Xb 这个课程的大致内容是介绍如何从给定的二维影像中恢复出人体的姿态(2D或者3D),大纲如下所示,基本上可以认为流程是:先是恢…

Spring Boot 日志配置(Slf4j)

SLF4J与Logback简介 Java日志框架众多,常用的有java.util.logging, log4j, logback,commons-logging等。 SLF4J (Simple Logging Facade For Java),它是一个针对于各类Java日志框架的统一Facade抽象。SLF4J定义了统一的日志抽象接口&#x…

Linux命令学习之pwd和ls

pwd pwd是查看当前所在目录的命令。 可以看到当前所在目录是/root。在这里需要注意/是根目录,是所有其他目录的父节点,/root目录是root用户的家(home)目录,这是两个不同的目录。 man pwd可以看一下pwd的帮助&#xf…

Power BI 如何生成动态指标散点图

前言 本文介绍如何在Power BI中创建动态散点图,可以自由切换X轴和Y轴的指标。 数据下载: 使用的是CSDN后台的单篇文章分析数据,在“作品数据”页点击“导出数据”。 因为都是累计值,所以用了两天的数据,手动添加…

[数据挖掘02] pandas的分配和聚合函数

一 说明 窗口函数是什么?窗口函数是时间序列的局部属性处理函数,比如,一维卷积滤波、移动平均、指数平均本篇我们将针对pandas对象的窗口函数展开讨论,并以示例展示他们的概念实质。 二 窗口函数、分组函数( GroupBy …

大语言模型速查表;ChatGPT发展路线图;11条市场营销ChatGPT Prompt;使用Midjourney制作专属头像 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 大语言模型速查表 Large Language Model Cheat Sheet ShowMeAI知识星球资源编码:R115 本份速查表的制作目的,是…

Linux4.2LAMP

文章目录 计算机系统5G云计算第一章 LINUX LAMP一、概述二、编译安装Apache httpd服务1.关闭防火墙,将安装Apache所需软件包传到/opt目录下2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量…