python flask 框架模块介绍

Flask 是一个轻量级、可扩展的 Python Web 框架,特别适合构建小型和中型应用程序。它的设计哲学是简单、灵活,允许开发者根据需要选择或创建功能模块。以下是 Flask 框架的核心模块和其功能的详细讲解:

  1. Flask 核心模块

(1) flask.Flask 类

Flask 应用程序的核心,所有功能都基于这个类实例化。

初始化 Flask 应用时需要传入应用模块的名称:

python

from flask import Flask

app = Flask(name)

关键参数:

static_url_path: 静态文件的 URL 路径。

template_folder: 模板文件夹的路径。

(2) flask.Request

处理客户端发送的 HTTP 请求。

提供对请求数据的访问,例如表单、JSON 数据、Headers 等。

常用属性:

request.args: 获取 URL 中的查询参数。

request.form: 获取 POST 请求中的表单数据。

request.json: 获取请求体中的 JSON 数据。

request.headers: 获取请求的 Header。

(3) flask.Response

表示服务器发送给客户端的 HTTP 响应。

可以定制响应内容、状态码和 Headers。

示例:

python

from flask import Response

@app.route('/')

def custom_response():

return Response("Hello, World!", status=200, mimetype='text/plain')

(4) flask.Blueprint

用于模块化管理大型应用,将功能分组。

每个 Blueprint 是一个独立的模块,可以注册到主应用中。

示例:

python

from flask import Blueprint

bp = Blueprint('admin', name)

@bp.route('/dashboard')

def admin_dashboard():

return "Admin Dashboard"

app.register_blueprint(bp, url_prefix='/admin')

(5) flask.render_template

用于渲染 HTML 模板,与模板引擎 Jinja2 集成。

可以传递变量到模板中进行动态渲染。

示例:

python

from flask import render_template

@app.route('/')

def home():

return render_template('index.html', title="Home Page")

(6) flask.url_for

生成 URL,用于动态链接构建。

避免硬编码 URL,提高代码可维护性。

示例:

python

from flask import url_for

@app.route('/user/<username>')

def user_profile(username):

return f"Profile page of {username}"

生成链接

url = url_for('user_profile', username='Alice') 输出:/user/Alice

  1. 常用扩展模块

Flask 提供了丰富的扩展模块,可以轻松实现各种功能:

(1) FlaskSQLAlchemy

提供对数据库的支持,集成了 SQLAlchemy。

用于定义模型、查询数据等。

示例:

python

from flask_sqlalchemy import SQLAlchemy

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), nullable=False)

(2) FlaskMigrate

用于数据库迁移管理,与 FlaskSQLAlchemy 搭配使用。

示例:

bash

flask db init

flask db migrate m "Initial migration"

flask db upgrade

(3) FlaskWTF

提供表单处理功能,支持表单验证和 CSRF 保护。

示例:

python

from flask_wtf import FlaskForm

from wtforms import StringField, SubmitField

class MyForm(FlaskForm):

name = StringField('Name')

submit = SubmitField('Submit')

(4) FlaskRESTful

用于构建 RESTful API,更加方便地处理请求和响应。

示例:

python

from flask_restful import Api, Resource

api = Api(app)

class HelloWorld(Resource):

def get(self):

return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

  1. Flask 工作流程

  2. 启动应用:

使用 app.run() 启动服务器。

  1. 路由分配:

根据 URL 匹配注册的路由,调用相应的视图函数。

  1. 请求处理:

视图函数处理请求并返回响应。

  1. 模板渲染:

将动态数据嵌入 HTML 模板。

  1. 返回响应:

将响应返回给客户端。

  1. 优点和适用场景

优点:

简单灵活,适合快速开发。

支持模块化设计,易于扩展。

生态丰富,提供了大量插件和扩展。

适用场景:

小型或中型 Web 应用。

RESTful API 开发。

快速原型设计。

相关推荐
2301_805054567 分钟前
Python训练营打卡Day59(2025.7.3)
开发语言·python
lsx20240631 分钟前
CSS 网页布局:从基础到进阶
开发语言
万千思绪32 分钟前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
蜗牛沐雨35 分钟前
警惕 Rust 字符串的性能陷阱:`chars().nth()` 的深坑与高效之道
开发语言·后端·rust
2401_858286111 小时前
125.【C语言】数据结构之归并排序递归解法
c语言·开发语言·数据结构·算法·排序算法·归并排序
guygg882 小时前
基于matlab的FIR滤波器
开发语言·算法·matlab
双叶8362 小时前
(C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
c语言·开发语言·数据结构·c++
微风粼粼2 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
源代码•宸2 小时前
C++高频知识点(二)
开发语言·c++·经验分享
云天徽上2 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5