跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Python Flask 框架
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Python Flask框架 = '''Flask'''是一个轻量级的[[Python]] [[Web框架]],基于Werkzeug WSGI工具包和Jinja2模板引擎构建。它以简洁灵活的设计哲学著称,适合快速开发小型到中型Web应用,也被称为"微框架"(Microframework)。 == 核心特性 == Flask的核心特点包括: * '''轻量级''':核心功能精简,可通过扩展增加功能 * '''模块化''':使用蓝图(Blueprints)实现模块化开发 * '''开发友好''':内置开发服务器和调试器 * '''灵活''':不强制项目结构,开发者可自由组织代码 * '''测试支持''':提供测试客户端支持单元测试 == 安装与基础使用 == 安装Flask只需简单的pip命令: <syntaxhighlight lang="bash"> pip install flask </syntaxhighlight> === 最小应用示例 === 以下是一个最简单的Flask应用: <syntaxhighlight lang="python"> from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run() </syntaxhighlight> '''代码解析''': 1. 创建Flask应用实例 2. 使用<code>@app.route</code>装饰器定义路由 3. 视图函数返回响应内容 4. <code>app.run()</code>启动开发服务器 访问<code>http://localhost:5000/</code>将显示"Hello, World!" == 核心组件 == === 路由系统 === Flask使用装饰器定义URL路由: <syntaxhighlight lang="python"> @app.route('/user/<username>') def show_user_profile(username): return f'User {username}' </syntaxhighlight> 支持的路由变量类型: * <code><string:var></code> (默认) * <code><int:var></code> * <code><float:var></code> * <code><path:var></code> * <code><uuid:var></code> === 请求与响应 === 处理请求数据和返回响应: <syntaxhighlight lang="python"> from flask import request, make_response @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] response = make_response(f'Welcome {username}!') response.set_cookie('username', username) return response return ''' <form method="post"> <input type="text" name="username"> <input type="submit"> </form> ''' </syntaxhighlight> === 模板引擎 === 使用Jinja2模板: '''templates/hello.html''': <syntaxhighlight lang="html"> <!DOCTYPE html> <html> <head> <title>Hello {{ name }}</title> </head> <body> <h1>Hello {{ name }}!</h1> </body> </html> </syntaxhighlight> '''Python代码''': <syntaxhighlight lang="python"> from flask import render_template @app.route('/hello/<name>') def hello(name): return render_template('hello.html', name=name) </syntaxhighlight> == 进阶特性 == === 蓝图(Blueprints) === 模块化组织大型应用: <syntaxhighlight lang="python"> from flask import Blueprint auth = Blueprint('auth', __name__) @auth.route('/login') def login(): return "Login Page" # 在主应用中注册 app.register_blueprint(auth, url_prefix='/auth') </syntaxhighlight> === 数据库集成 === 使用Flask-SQLAlchemy扩展: <syntaxhighlight lang="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), unique=True) @app.route('/user/<username>') def show_user(username): user = User.query.filter_by(username=username).first() return render_template('user.html', user=user) </syntaxhighlight> === REST API开发 === 构建RESTful API: <syntaxhighlight lang="python"> from flask import jsonify @app.route('/api/users', methods=['GET']) def get_users(): users = [{'name': 'Alice'}, {'name': 'Bob'}] return jsonify(users) @app.route('/api/users', methods=['POST']) def create_user(): # 处理JSON请求 data = request.get_json() # 创建用户逻辑 return jsonify({'status': 'success'}), 201 </syntaxhighlight> == 项目结构示例 == 典型的中型Flask项目结构: <mermaid> graph TD A[项目根目录] --> B[app/] B --> C[__init__.py] B --> D[views.py] B --> E[models.py] B --> F[templates/] B --> G[static/] A --> H[config.py] A --> I[requirements.txt] A --> J[run.py] </mermaid> == 部署方案 == Flask应用常见部署方式: * 开发服务器(仅开发环境) * Waitress(生产轻量级) * Gunicorn + Nginx(常见生产方案) * uWSGI + Nginx(高性能方案) * Docker容器化部署 == 实际应用案例 == '''电商网站后台API''': 1. 用户认证系统(JWT) 2. 商品CRUD操作 3. 订单处理流程 4. 支付网关集成 '''代码片段''': <syntaxhighlight lang="python"> @app.route('/api/products', methods=['GET']) @jwt_required() def get_products(): products = Product.query.all() return jsonify([p.to_dict() for p in products]) @app.route('/api/orders', methods=['POST']) @jwt_required() def create_order(): data = request.get_json() order = Order( user_id=get_jwt_identity(), items=data['items'] ) db.session.add(order) db.session.commit() return jsonify(order.to_dict()), 201 </syntaxhighlight> == 性能优化建议 == * 使用<code>flask-caching</code>扩展缓存频繁访问的数据 * 启用Gzip压缩 * 数据库查询优化(避免N+1查询问题) * 使用<code>flask-compress</code>压缩静态资源 * 考虑异步任务处理(Celery) == 学习资源 == * Flask官方文档 * Flask Mega-Tutorial(Miguel Grinberg) * Flask Web开发实战(李辉著) == 常见问题 == '''Q: Flask适合大型项目吗?''' A: 可以,通过合理的蓝图划分和扩展使用,Flask能胜任大型项目开发。 '''Q: Flask和Django的主要区别?''' A: Django是"全栈式"框架,提供更多内置功能;Flask更灵活,需要手动集成更多组件。 '''Q: 如何选择Flask扩展?''' A: 优先考虑官方推荐扩展,检查维护状态和社区支持情况。 [[Category:编程语言]] [[Category:Python]] [[Category:Python Web 开发]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)