当前位置: 首页 > 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():确保在创建数据库表时,应用上下文处于激活状态。

相关文章:

  • DAY 31 文件的规范拆分和写法
  • 人工智能学习24-BP激活函数
  • 【专业数据库探索 05】ArangoDB多模数据库革命:一个数据库解决文档图关系三大数据模型
  • uni-app项目loading显示方案
  • 第五章 决策树
  • 同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——C
  • HTML5白云飘飘动态效果教程
  • C# 解析 URL URI 中的参数
  • 大模型量化与剪枝
  • 【0.0 漫画C语言计算机基础 - 从二进制开始认识计算机】
  • Cursor链接远程服务器实现项目部署
  • 【python】bash: !‘: event not found
  • ABC410 : F - Balanced Rectangles
  • nginx 配置返回 文件大小
  • 2025年渗透测试面试题总结-浙江东岸检测[实习]安全工程师(题目+回答)
  • 【华为开发者学堂】HarmonyOS
  • 16.vue.js watch()和watchEffect()的对比?(追踪依赖)(3)
  • Python 训练营打卡 Day 45-Tensorboard
  • 20250614让NanoPi NEO core开发板在Ubuntu core16.04系统下使用耳机播音测试
  • conda虚拟环境管理
  • 南昌谁做网站设计/自媒体账号申请
  • 网站建设销售兼职合同/创意营销新点子
  • 大浪做网站公司/黑帽seo技巧
  • 网页设计作品网站/seo如何优化
  • 在线制作logo图标免费生成/seo站长工具查询
  • wordpress index.php 跳转/seo全网图文推广