本文共 2201 字,大约阅读时间需要 7 分钟。
Flask 是一个高效的 Python 微框架,虽然功能简洁,但其扩展性和灵活性使其在 Web 开发领域备受青睐。Flask 的核心设计理念强调可扩展性,它通过模块化的设计提供了一个强大的开发框架,适合从小型项目到大型应用的多样化需求。
最小的 Flask 应用通常只需要少量代码即可完成基本功能。以下是一个简单的 Hello World 应用示例:
from flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return 'Hello World!
' 将上述代码保存为 hello.py 文件后,可以通过以下命令运行应用:
flask run
Flask 的路由系统支持动态参数,灵活性极高。动态参数的默认类型为字符串,但可以根据需求指定其他类型(如整数、浮点数或路径参数)。
@app.route('/user/ ')def user(name): return f' Hello, {name}!
' 如需自定义参数类型,可以使用 @app.route 装饰器中的 type 参数:
@app.route('/user/ ')def get_user(id): return f'type(id):{type(id)}' Flask 内置了一个高效的服务器,开发和调试时可以直接使用。以下是常用命令示例:
(venv) $ flask run(venv) $ flask run --host 0.0.0.0(venv) $ flask run --help(venv) $ flask shell
在处理请求时,Flask 会自动管理应用和请求上下文,确保不同请求之间不会互相干扰。以下是常用上下文变量:
| 变量名 | 类型 | 说明 |
|---|---|---|
| current_app | 应用实例 | 当前应用的实例 |
| g | 请求临时存储 | 用于临时存储请求相关数据 |
| request | 请求对象 | 包含 HTTP 请求信息的对象 |
| session | 会话对象 | 用于存储用户会话数据 |
Flask 会根据 URL 映射表将请求路由至相应的视图函数。app.url_map 提供了详细的 URL 映射信息。
Flask 提供了多种请求钩子,如 before_request、after_request 和 teardown_request,用于在请求处理前后执行自定义逻辑。
| 钩子名称 | 说明 |
|---|---|
| before_request | 在每次请求之前执行 |
| after_request | 在每次请求之后执行 |
| teardown_request | 即使有异常,也在每次请求之后执行 |
Flask 支持多种 HTTP 方法,默认为 GET。可通过 methods 参数指定多个方法:
@app.route('/login', methods=['GET', 'POST'])def login(): if request.method == 'POST': return do_the_login() else: return show_the_login_form() Flask 会自动支持 HEAD 和 OPTIONS 方法。
返回值可为多种形式:
return 'Hello' # 返回文本return 'Hello', 200 # 返回响应元组return redirect('http://www.example.com') # 返回重定向 如需自定义响应,可以使用 make_response 函数:
resp = make_response(render_template('error.html'), 404)resp.headers['X-Something'] = 'A value'return resp 如需返回 404 错误,可以直接调用 abort 函数:
if not user: abort(404)
Flask 提供了 url_for 函数来生成应用内部 URL:
| 函数示例 | 生成的 URL |
|---|---|
| url_for('index') | / |
| url_for('index', _external=True) | http://localhost:5000/ |
| url_for('user', name='john', _external=True) | http://localhost:5000/user/john |
| url_for('user', name='john', page=2, version=1) | /user/john?page=2&version=1 |
Flask默认将静态文件存储在 app/static 目录中,生成 URL 可通过 url_for('static', filename='css/styles.css')。
通过以上内容,可以快速掌握 Flask 框架的核心功能及其使用方法。
转载地址:http://vwxkz.baihongyu.com/