Flask2入门开发详解

Flask 是什么?

Flask 是一个轻量级的 Python Web 应用框架,基于 Werkzeug WSGI 工具包 和 Jinja2 模板引擎 构建。它被设计为简单易用、灵活可扩展。

主要特点

1. 轻量级和简洁

复制代码
from flask import Flask
app = Flask(__name__)

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

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

只需几行代码就能创建一个 Web 应用!

2. 灵活和可扩展

Flask 本身是"微型"框架,核心功能简单,但可以通过扩展添加功能:

  • Flask-SQLAlchemy:数据库 ORM

  • Flask-Login:用户认证

  • Flask-WTF:表单处理

  • Flask-RESTful:构建 REST API

3. 内置开发服务器和调试器

复制代码
app.run(debug=True, host='0.0.0.0', port=5000)

内置服务器方便开发调试。

核心组件

1. 路由系统

复制代码
@app.route('/user/<username>')
def show_user(username):
    return f'User: {username}'

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'Post: {post_id}'

支持变量规则和类型转换。

2. 请求和响应处理

复制代码
from flask import request, jsonify, make_response

@app.route('/api/data', methods=['POST'])
def receive_data():
    data = request.json  # 获取 JSON 数据
    name = request.form.get('name')  # 获取表单数据
    
    # 返回 JSON 响应
    return jsonify({'status': 'success', 'data': data})

# 自定义响应
@app.route('/custom')
def custom_response():
    response = make_response('Custom Response')
    response.headers['X-Custom-Header'] = 'Value'
    return response

3. 会话和 Cookies

复制代码
from flask import session, redirect, url_for

app.secret_key = 'your-secret-key'  # 必须设置密钥

@app.route('/login', methods=['POST'])
def login():
    session['username'] = request.form['username']
    return redirect(url_for('dashboard'))

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

项目结构示例

Flask主要文件:

python 复制代码
from flask import Flask
from exts import db
import os
from flask_jwt_extended import JWTManager
from config import DevelopmentConfig
from flask_cors import *
base_dir=os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
CORS(app,supports_credentials=True,resources="/*")
app.config.from_object(DevelopmentConfig)
db.init_app(app)
jwt=JWTManager(app)

from apps.views.goods import goods_bp
from apps.views.cates import cates_bp
from apps.views.members import member_bp
from apps.views.basic import basic_bp
from apps.views.orders import order_bp

app.register_blueprint(goods_bp, url_prefix='/goods')
app.register_blueprint(cates_bp, url_prefix='/cates')
app.register_blueprint(member_bp, url_prefix='/members')
app.register_blueprint(basic_bp, url_prefix='/')
app.register_blueprint(order_bp, url_prefix='/orders')

config.py为数据库配置文件,数据库默认采用mysql,exts.py采用模块化单例形式导入SQLAlchemy:

python 复制代码
from flask_sqlalchemy import SQLAlchemy
# from apps import app
from config import DevelopmentConfig

# app.config.from_object(DevelopmentConfig)
# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(base_dir,'data1.sqlite')
# app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=False

db=SQLAlchemy()

Flask 扩展推荐

扩展 用途
Flask-SQLAlchemy 数据库 ORM
Flask-Migrate 数据库迁移
Flask-Login 用户会话管理
Flask-WTF 表单处理和安全
Flask-Mail 电子邮件支持
Flask-RESTful REST API 构建
Flask-CORS 跨域资源共享

适用场景

  • RESTful API 开发

  • 微服务架构

  • 原型快速开发

  • 小型到中型 Web 应用

  • 教育项目和学习

优点

✅ 简单易学,入门门槛低

✅ 灵活,不强制项目结构

✅ 文档完善,社区活跃

✅ 易于测试和调试

✅ 丰富的扩展生态系统

缺点

⚠️ 对于大型项目需要更多架构设计

⚠️ 部分高级功能需要额外扩展

⚠️ 默认不包含数据库 ORM、表单验证等

相关推荐
深圳市尚想信息技术有限公司11 小时前
TM52F1376海速芯HITENX Flash-8位MCU单片机,多通道ADC + 段码显示一体化主控芯片
单片机·嵌入式硬件·mcu·flask·芯片·控制器
高级程序源1 天前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
高级程序源1 天前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计
高级程序源2 天前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计
高级程序源2 天前
django房屋租赁系统28636-计算机课程设计、毕业设计
python·mysql·elasticsearch·小程序·django·flask·课程设计
fanjiu20202 天前
flask接收消息
python·flask
专业程序开发源2 天前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计
毕业设计7032 天前
(免费领源码)django空气净化器销售系统09218- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·scrapy·mysql·pycharm·django·flask·pandas
龙腾-虎跃3 天前
AI-Vue3-python-flask-Blog 全栈博客项目深度解析:从零搭建你的 AI 博客
人工智能·python·flask
智码看视界3 天前
Edge AI 全栈实战 ⑤:云边协同收尾——MQTT 桥接 + 云端看板管 N 台边缘设备
mqtt·flask·iot·全栈开发·云边协同·edgeai