十六、【Python】基础教程 - 【Flask】网络编程开发

目录

前言

[Flask 基础概念](#Flask 基础概念)

[安装 Flask](#安装 Flask)

[示例:创建一个 Flask Web 应用](#示例:创建一个 Flask Web 应用)

[运行 Flask 应用](#运行 Flask 应用)

更复杂的例子

测试新功能


前言

Flask 是一个用 Python 编写的微型 Web 框架,它以简单性和灵活性著称,非常适合快速开发小型到中型的 Web 应用。Flask 不要求特定的项目结构或依赖关系,这使得我们可以根据自己的需求自由选择组件。

Flask 基础概念

  • 路由(Routing):定义 URL 路径和视图函数之间的映射。
  • 视图函数(View Functions):响应特定 URL 请求的函数。
  • 请求对象(Request Objects):包含客户端发送的请求信息。
  • 响应对象(Response Objects):用于构建返回给客户端的响应。
  • Jinja2 模板引擎:用于生成动态 HTML 页面。

安装 Flask

在你的 Python 环境中安装 Flask:

bash 复制代码
pip install Flask

示例:创建一个 Flask Web 应用

创建一个名为 app.py 的文件,并输入以下代码:

python 复制代码
from flask import Flask

app = Flask(__name__)

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

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

这里我们定义了一个简单的路由 /,它关联到 index 函数,该函数返回一个字符串 "Hello, World!"。

运行 Flask 应用

在命令行中,转到包含 app.py 文件的目录,并运行:

bash 复制代码
python app.py

你将看到类似这样的输出:

bash 复制代码
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 123-456-789

打开你的浏览器并访问 http://127.0.0.1:5000/,你应该能看到 "Hello, World!" 的页面。

更复杂的例子

让我们添加一些动态内容和参数处理。修改 app.py 如下:

python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
    return f'Hello, {name}!'

@app.route('/post', methods=['POST'])
def post_data():
    data = request.form['data']
    return f'Received POST data: {data}'

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

现在我们添加了一个带有参数的路由和一个处理 POST 请求的路由。

测试新功能

  • 访问 http://127.0.0.1:5000/hello/John,应显示 "Hello, John!"。
  • 使用 Postman 或类似的工具发送一个 POST 请求到 http://127.0.0.1:5000/post,并在 body 中包含 data 字段,应看到数据被正确接收并显示。

Flask 的灵活性和易用性使其成为 Python Web 开发的热门选择。通过结合 Jinja2 模板、数据库库(如 SQLAlchemy)和其他扩展,你可以构建出功能丰富且可维护的 Web 应用。

相关推荐
leoZ23116 分钟前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
AI科技星35 分钟前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
夏天测1 小时前
Python 网络编程入门:从 Socket 底层到 HTTP 并发实战
python·socket·httpx·requests·tcp udp·python网络编程·爬虫基础
鹿角片ljp1 小时前
Java框架篇:Spring + SpringMVC + SpringBoot + MyBatis深度复习
java·开发语言
玉鸯1 小时前
多 Agent 并行时如何保证状态一致性?
分布式·python·agent
aGdF8E3gQ2 小时前
【Application Insights】采样率对Function App日志收集的影响和解决方法
python·flask·wpf
ATMQuant2 小时前
以AI量化为生:25.vnpy 4.4升级实战 - 魔改版框架如何安全跟进上游
人工智能·python·量化交易·vnpy
xlxxy_2 小时前
外部系统调用SAP接口遇到的一些报错
开发语言·数据库·sap·abap
八角.。2 小时前
方法参数与Debug按键
java·开发语言·jvm
郝亚军3 小时前
FE1.1S-BQFN24BT可以指定IP端口吗?
开发语言·php