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

本文介绍了Flask,一个轻量级的PythonWeb框架,强调其简单易用、灵活扩展的特点。通过示例展示了如何编写并运行第一个网页,包括定义路由和处理函数,以及如何查看运行效果。此外,提到了Flask的Debug模式和路由系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 等等,在后续的学习中将会具体说明用法

<think>好的,我现在需要帮助用户理解基于Flask框架的时间服务代码。用户提到了一段返回当前时间的API代码,但具体代码没有给出,所以我需要先假设一个典型的例子,然后逐步解释。 首先,我应该回忆一下Flask的基本结构。通常,Flask应用会导入Flask类,创建一个应用实例,然后定义路由和视图函数。对于时间服务,可能会用到Python的datetime模块来获取当前时间。 接下来,我需要考虑用户可能的代码结构。例如,可能有类似以下的代码: ```python from flask import Flask, jsonify from datetime import datetime app = Flask(__name__) @app.route('/time', methods=['GET']) def get_time(): current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return jsonify({"time": current_time}) if __name__ == '__main__': app.run(debug=True) ``` 接下来,我需要分解这段代码的各个部分。首先,导入必要的模块:Flask和jsonify用于创建应用和返回JSON响应,datetime用于获取当前时间。 然后,创建Flask应用实例。路由装饰器@app.route定义了URL路径和允许的HTTP方法。这里可能是GET方法,因为获取时间通常不需要提交数据。 视图函数get_time()处理请求,使用datetime.now()获取当前时间,并用strftime格式化。然后返回一个JSON响应,包含格式化后的时间字符串。 最后,应用在main块中运行,启用调试模式。用户可能对调试模式的作用不太清楚,需要解释。 用户可能遇到的问题包括中文乱码,如引用[3]提到的。检查代码中是否设置了响应头确保UTF-8编码,或者使用jsonify自动处理。jsonify会设置Content-Type为application/json,通常不会出现乱码。 另外,用户可能对路由、请求方法、返回格式等概念不熟悉。需要逐一解释这些部分,以及如何测试API,比如使用浏览器或curl命令访问/time端点。 还要注意Flask的常见实践,比如使用jsonify返回JSON数据,而不是手动构建响应,以避免编码问题。同时,确保依赖正确安装,比如Flask库。 总结,我需要逐步解释代码结构、各部分功能、可能的配置问题,以及如何测试API,同时引用提供的参考资料解决可能出现的问题,如乱码或参数获取。</think>以下是基于Flask框架的时间服务代码的解读(假设示例代码): ```python from flask import Flask, jsonify from datetime import datetime app = Flask(__name__) @app.route('/api/time', methods=['GET']) def get_current_time(): # 获取当前时间并格式化 current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 构建JSON响应(自动处理中文编码问题)[^3] return jsonify({ "status": "success", "timestamp": current_time, "message": "时间获取成功" }) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` ### 代码解读步骤 1. **模块导入** - `Flask`类用于创建Web应用实例 - `jsonify`确保返回标准JSON格式响应 - `datetime`模块用于获取系统时间 2. **应用初始化** - `app = Flask(__name__)`创建Flask应用实例 - 命名约定保证模板/静态文件路径正确 3. **路由定义** - `@app.route('/api/time', methods=['GET'])`定义API端点 - 限定GET方法符合RESTful设计规范[^2] 4. **业务逻辑** - `strftime('%Y-%m-%d %H:%M:%S')`将时间转为易读格式 - 使用jsonify自动设置响应头`Content-Type: application/json` 5. **启动配置** - `host='0.0.0.0'`允许外部访问 - `port=5000`指定监听端口 - 调试模式不应出现在生产环境 ### 测试方法 通过curl命令测试: ```bash curl http://localhost:5000/api/time ``` 预期响应: ```json { "message": "时间获取成功", "status": "success", "timestamp": "2023-10-05 14:30:45" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值