如何快速掌握Flask框架的核心知识点?
摘要:1. 简介与特点 微框架: 核心简单,高度可扩展,不强制使用特定工具或库。 优点: 学习曲线平缓: 易于上手,适合小型项目和快速开发。 灵活性高:&
1.简介与特点
微框架:核心简单,高度可扩展,不强制使用特定工具或库。
优点:
学习曲线平缓:易于上手,适合小型项目和快速开发。
灵活性高:开发者可以自由选择组件和技术栈。
社区活跃:拥有丰富的第三方扩展和活跃的社区支持。
适用于API开发:轻量级使其非常适合构建 RESTful API。
缺点:
功能较少:核心功能仅包含请求分发和模板渲染,其他需自行集成。
不适合大型项目?:对于非常大型、复杂且有明确规范的项目,可能需要更多约定和内置功能的框架(如 Django)。
2.基本应用结构
一个最简单的 Flask 应用:
from flask import Flask
# 1. 创建 Flask 应用实例
app = Flask(__name__)
# 2. 路由定义 (URL 映射到视图函数)
@app.route('/')
def hello_world():
return 'Hello, World!'
# 3. 运行应用
if __name__ == '__main__':
# 开启调试模式,代码修改后自动重启,并提供交互式调试器
app.run(debug=True)
3.核心概念
Flask 实例 (app = Flask(__name__))
Flask类是所有 Flask 应用的入口。
__name__参数是当前模块的名称,Flask 用它来定位资源(如模板、静态文件)。
路由 (Routing)
使用@app.route(rule, options)装饰器将 URL 路径与视图函数关联起来。
rule: URL 规则字符串,支持变量。
URL 变量:<variable_name>用于捕获 URL 中的值。
@app.route('/user/<username>')
@app.route('/post/<int:post_id>')(指定类型,如string,int,float,path,uuid)
HTTP 方法限制:methods=['GET', 'POST']
@app.route('/submit', methods=['POST'])
URL 反转:url_for()函数根据视图函数名和参数生成 URL。
url_for('hello_world')->/
url_for('get_user', username='alice')->/user/alice
用于避免硬编码 URL,方便修改和维护。
请求上下文 (Request Context)
在每次请求到达时创建,包含请求相关的所有信息。
request对象:包含客户端发送的所有数据。
request.method: 请求方法 (GET, POST等)
request.args: GET 请求的查询参数 (ImmutableMultiDict)
request.form: POST 请求的表单数据 (ImmutableMultiDict)
request.json: POST 请求的 JSON 数据 (如果Content-Type是application/json)
request.headers: 请求头
request.cookies: 客户端的 Cookie
request.files: 上传的文件
request.path,request.url,request.base_url等
session对象:用户会话信息,用于在请求之间存储数据。
需要设置app.secret_key来加密会话数据。
session['user_id'] = 1
应用上下文 (Application Context)
在应用启动时创建,包含应用相关的配置信息。
current_app对象:代理当前的 Flask 应用实例。
响应 (Response)
视图函数可以返回:
字符串:Flask 会自动将其包装为 Response 对象,Content-Type为text/html。
元组:(response, status_code, headers)
return 'Error!', 400
return 'Custom Header', 200, {'X-My-Header': 'Hello'}
Response对象:make_response()函数创建。
jsonify():将 Python 字典或列表转换为 JSON 响应,并自动设置Content-Type: application/json。
