当前位置: 首页 > news >正文

Python Flask 框架学习笔记

Python Flask 框架学习笔记

一、Flask 框架简介

Flask 是一个使用 Python 编写的轻量级 Web 应用框架,它被称为 “微框架”,因为它不强制使用特定的数据库、模板引擎或其他工具,开发者可以根据项目需求自由选择和集成外部库。Flask 框架基于 Werkzeug(WSGI 工具集)和 Jinja2(模板引擎),具有简洁灵活、易于扩展、上手快等特点,非常适合快速开发小型 Web 应用和 API,也常用于构建大型项目的原型。

二、安装 Flask

在使用 Flask 之前,需要先安装它。可以通过 Python 的包管理工具pip进行安装,在命令行中执行以下命令:

pip install flask

三、Flask 基础应用实例

创建一个最简单的 Flask 应用,在 Python 文件中输入以下代码:

from flask import Flask# 创建Flask应用实例
app = Flask(__name__)# 定义路由和视图函数
@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':# 运行应用,默认在本地5000端口app.run()

在上述代码中:

  1. 首先从flask模块导入Flask类,用于创建应用实例。

  2. 使用Flask(name)创建应用对象,__name__是 Python 的内置变量,它的值取决于模块的导入方式,这样 Flask 就能知道在哪里寻找模板、静态文件等。

  3. 使用@app.route(‘/’)装饰器定义路由,当用户访问网站根路径/时,就会执行hello_world函数,该函数返回的字符串会作为响应内容发送给客户端。

  4. if name == ‘main’:确保只有在直接运行该脚本时才启动 Flask 应用,在生产环境中,通常会使用更专业的 Web 服务器来运行应用。

运行该 Python 脚本后,在浏览器中访问http://127.0.0.1:5000/,就能看到Hello, World!的页面。

四、路由与 URL 变量

1. 基本路由

除了根路径路由,还可以定义其他路径的路由,示例如下:

from flask import Flaskapp = Flask(__name__)@app.route('/about')
def about_page():return 'This is the about page.'@app.route('/contact')
def contact_page():return 'This is the contact page.'if __name__ == '__main__':app.run()

此时访问http://127.0.0.1:5000/about会显示This is the about page.,访问http://127.0.0.1:5000/contact会显示This is the contact page.。

2. URL 变量

有时候需要在 URL 中传递参数,Flask 可以通过<变量名>的形式定义 URL 变量,示例如下:

from flask import Flaskapp = Flask(__name__)@app.route('/user/<username>')
def show_user_profile(username):return f'User {username}'@app.route('/post/<int:post_id>')
def show_post(post_id):return f'Post {post_id}'if __name__ == '__main__':app.run()

在上述代码中:

  • @app.route(‘/user/’)定义了一个接受字符串类型变量username的路由,访问http://127.0.0.1:5000/user/john,会显示User john。

  • @app.route(‘/post/int:post_id’)定义了一个接受整数类型变量post_id的路由,访问http://127.0.0.1:5000/post/123,会显示Post 123。

五、请求处理

Flask 可以处理不同类型的 HTTP 请求,如GET、POST等。下面是一个处理表单提交(POST请求)的实例:

from flask import Flask, requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])
def index():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')return f'You submitted username: {username} and password: {password}'return '''<form method="post"><input type="text" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit" value="Submit"></form>'''if __name__ == '__main__':app.run()

在这个例子中:

  • @app.route(‘/’, methods=[‘GET’, ‘POST’])指定该路由可以处理GET和POST请求。

  • 当接收到GET请求时,返回一个包含表单的 HTML 字符串。

  • 当接收到POST请求时,通过request.form.get(‘username’)和request.form.get(‘password’)获取表单中提交的数据,并返回相应的信息。

六、模板引擎(Jinja2)

Flask 默认使用 Jinja2 作为模板引擎,它可以将 Python 数据动态地渲染到 HTML 页面中。下面是一个简单的模板使用示例:

  1. 在项目根目录下创建一个名为templates的文件夹(Flask 会默认在这个文件夹中寻找模板文件)。

  2. 在templates文件夹中创建一个index.html文件,内容如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Flask Template Example</title>
</head><body><h1>Hello, {{ name }}!</h1><ul>{% for item in items %}<li>{{ item }}</li>{% endfor %}</ul>
</body></html>
  1. 修改 Python 代码:
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def index():name = 'Flask User'items = ['Apple', 'Banana', 'Cherry']return render_template('index.html', name=name, items=items)if __name__ == '__main__':app.run()

在上述代码中:

  • render_template函数用于渲染模板文件,它会自动在templates文件夹中寻找指定的模板文件。

  • 可以将 Python 变量传递给模板,在模板中使用{{ 变量名 }}来显示变量的值,使用{% %}来编写控制语句,如for循环。

七、静态文件处理

在 Web 应用中,通常需要处理 CSS、JavaScript、图片等静态文件。Flask 默认会在项目根目录下的static文件夹中寻找静态文件。

  1. 在项目根目录下创建static文件夹。

  2. 在static文件夹中放入静态文件,例如styles.css。

  3. 修改模板文件(如templates/index.html)来引用静态文件:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Flask Static Example</title><link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head><body><h1>Static File Example</h1>
</body></html>

在上述模板中,url_for(‘static’, filename=‘styles.css’)用于生成静态文件的 URL,static是 Flask 中静态文件的端点名称,filename指定具体的文件名。

八、Flask 扩展

Flask 有丰富的扩展,可以方便地集成各种功能,如数据库操作、用户认证、邮件发送等。例如,使用Flask-SQLAlchemy扩展进行数据库操作,使用Flask-Login进行用户认证等。安装和使用扩展的方式通常如下:

  1. 使用pip安装扩展,例如安装Flask-SQLAlchemy:
pip install flask-sqlalchemy
  1. 在 Flask 应用中初始化扩展,示例代码如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///example.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)def __repr__(self):return f'<User {self.username}>'if __name__ == '__main__':with app.app_context():db.create_all()app.run()

在上述代码中:

  • 首先导入Flask和SQLAlchemy类。

  • 通过app.config[‘SQLALCHEMY_DATABASE_URI’]配置数据库连接字符串,这里使用 SQLite 数据库。

  • 定义User模型类,继承自db.Model,用于表示数据库中的用户表结构。

  • with app.app_context():确保在创建数据库表时,应用上下文处于激活状态。

http://www.xdnf.cn/news/1036045.html

相关文章:

  • Linux操作系统之运维常用命令
  • 华为OD机试_2025 B卷_字符串分割(Python,100分)(附详细解题思路)
  • aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(四)
  • 22 - PSA模块
  • 解惑1、为何大容量电容滤低频,小容量电容滤高频
  • 数据库资源帖
  • 同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——A
  • 代码随想录算法训练营day4
  • (15)python+ selenium自动化测试 - 回顾2
  • 采用微服务的预期收益是什么?我们如何衡量成功?
  • 大IPD之——学习华为市场洞察,为战略找到方向(四)
  • FastGPT实战:从0搭建AI知识库与MCP AI Agent系统
  • Java求职者面试题解析:Spring、Spring Boot、MyBatis框架与源码原理
  • SpringBoot自动化部署实战指南
  • 【Photoshop】使用内容识别去除水印文字
  • Vue3 + TypeScript + Element Plus 表格实例null检查方法
  • Java设计题:如何设计一个线程池
  • 浅拷贝 与 深拷贝
  • HTTP1.1
  • JUC核心解析系列(四)——同步工具类 (Synchronizers)深度解析
  • 芯片测试之trim详解
  • Linux02
  • apt-get等操作依赖关系总报错?试一试aptitude
  • 高压接地电阻柜组装前的准备工作
  • nacos-作为注册中心与springcloud整合(三)
  • 【Elasticsearch】数据预处理(含实战案例)
  • Spring MVC扩展消息转换器-->格式化时间信息
  • 有些植物果实结在土里,但是花开在枝叶上,果不结在花上,花需要授粉才能结果吗?不用授粉的话,开花的意义在哪里?
  • 【MATLAB例程】追踪法制导的程序,适用于三维平面,目标是运动的,带绘图和捕获时间|附下载链接
  • 【CSS-14】深入解析CSS定位:从基础到高级应用