python中的flask框架
Flask 是一个用Python编写的轻量级Web应用框架
基于WSGI和Jinja2模板引擎
被称为“微框架”,其核心功能简单,不捆绑数据库管理、表单验证等功能,而是通过扩展来增加其他功能
Flask提供最基本的功能,不强制使用特定工具或库
通过插件和扩展来添加功能,如表单处理、数据库交互等
通过创建Flask对象来初始化应用
将URL映射到视图函数,处理请求并返回响应
使用Jinja2模板引擎渲染HTML页面,支持多种HTTP方法
通过创建Flask对象来初始化应用
Flask基于Werkzeug WSGI工具包和Jinja2模板引擎构建。
Werkzeug为Flask提供了请求和响应处理、路由匹配等基础功能,是Flask处理HTTP请求的底层支撑
Jinja2则用于模板渲染,可以方便地生成动态HTML页面,实现数据与视图的分离。
Flask 框架
使用pip可以方便快捷地安装 Flask
pip install flask
from flask import Flask
# 创建 Flask 应用实例
app = Flask(__name__)
# 定义路由和视图函数
@app.route('/')
def hello_world():
return 'Hello, World!'
# 启动应用
if __name__ == '__main__':
app.run(debug=True)
导入 Flask 类:从 flask
模块中导入 Flask
类,用于创建 Flask 应用实例。
app = Flask(__name__)
创建了一个 Flask 应用实例,__name__
是 Python 的内置变量,表示当前模块的名称。
使用 @app.route('/')
装饰器定义了一个路由,当用户访问根路径 /
时,会调用 hello_world
函数,该函数返回一个简单的字符串 'Hello, World!'
。
app.run(debug=True)
启动应用,debug=True
开启调试模式,方便在开发过程中调试代码,当代码发生变化时,服务器会自动重启。
Flask 使用装饰器来定义路由,允许URL路径映射到对应的视图函数。
@app.route('/about')
def about():
return 'This is the about page.'
定义了一个 /about
的路由,当用户访问该路径时,会返回 'This is the about page.'
。Flask 还支持动态路由
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'
<username>
是一个动态参数,用户访问 /user/john
时,username
的值会被设置为 'john'
,并传递给 show_user_profile
函数。
Flask 提供了 request
对象来处理客户端的请求信息,如获取请求参数、请求方法等,使用 Response
对象来返回响应给客户端。
from flask import request
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
# 处理登录逻辑
return 'Login successful'
使用 methods=['POST']
指定该路由只接受 POST 请求,通过 request.form.get()
方法获取表单数据。
Flask 默认使用 Jinja2 模板引擎,允许开发者将动态数据与 HTML 模板结合生成动态页面。创建一个 templates
文件夹,在其中创建 index.html
模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{
{ title }}</title>
</head>
<body>
<h1>{
{ message }}</h1>
</body>
</html>
在 Python 代码中使用 render_template
函数渲染模板
from flask import render_template
@app.route('/template')
def template_demo():
return render_template('index.html', title='Template Demo', message='This is a template example.')
render_template
函数会将 title
和 message
变量传递给模板文件,替换模板中的 {
{ title }}
和 {
{ message }}
占位符。
Flask 易于上手和快速搭建,适合在项目初期进行快速原型开发,验证项目的可行性和功能需求。开发者可以在短时间内搭建起一个简单的 Web 应用,展示项目的基本功能,为后续的开发提供基础。
对于一些功能简单、规模较小的 Web 应用,如小型企业网站等,Flask 的轻量级特性可以满足需求,并且易于维护。可以根据项目的实际情况选择合适的第三方库,快速完成项目的开发。
Flask 可以方便地创建 RESTful API,结合 JSON 数据格式,为前端应用或其他服务提供数据接口。
from flask import jsonify
@app.route('/api/data')
def api_data():
data = {'name': 'John', 'age': 30}
return jsonify(data)
使用 jsonify
函数将 Python 字典转换为 JSON 格式的响应,方便前端应用或其他服务进行数据交互。
Flask 有丰富的扩展库,可Flask - SQLAlchemy 用于数据库操作,Flask - Login 用于用户认证,Flask - WTF 用于表单处理等。