Flask 是一个轻量级的 Python Web 框架,旨在帮助开发者快速搭建 Web 应用。相比于 Django 等重量级框架,Flask 更加简洁和灵活,非常适合用于小型 Web 项目的开发,甚至可以用于构建 RESTful API。
Flask 的核心特性包括:
要使用 Flask,首先需要安装 Flask 库。打开命令行,使用 pip 安装:
pip install flask
创建项目文件夹
假设我们要创建一个名为 flask_demo
的项目,首先创建一个文件夹:
mkdir flask_demo
cd flask_demo
创建 Flask 应用
在 flask_demo
文件夹下,创建一个 Python 文件 app.py
,并在其中编写以下代码:
from flask import Flask
# 创建 Flask 实例
app = Flask(__name__)
# 定义路由和视图函数
@app.route('/')
def hello_world():
return 'Hello, World!'
# 启动应用
if __name__ == '__main__':
app.run(debug=True)
解释:
Flask(__name__)
:创建 Flask 应用实例,__name__
参数告诉 Flask 应用在哪个模块中。@app.route('/')
:装饰器,表示访问根 URL 时执行 hello_world
函数。app.run(debug=True)
:启动 Flask 应用并开启调试模式,方便开发时查看错误信息。运行应用
在命令行中执行以下命令启动 Flask 应用:
python app.py
启动成功后,访问浏览器,输入 http://127.0.0.1:5000/
,你应该能够看到浏览器显示“Hello, World!”。
在 Flask 中,路由是通过装饰器 @app.route()
来定义的,它将 URL 路径与视图函数(即处理请求的函数)进行关联。
例如,我们可以为不同的路径定义不同的视图函数:
@app.route('/hello')
def hello():
return 'Hello, Flask!'
@app.route('/goodbye')
def goodbye():
return 'Goodbye, Flask!'
访问 http://127.0.0.1:5000/hello
会返回 “Hello, Flask!”,而访问 http://127.0.0.1:5000/goodbye
会返回 “Goodbye, Flask!”。
Flask 允许你通过请求对象 (request
) 获取用户输入数据。常见的有 GET
和 POST
请求。
处理 GET
请求
默认情况下,Flask 使用 GET
方法处理请求。当你访问一个 URL 时,浏览器会发出一个 GET
请求。你可以通过 request.args
获取查询参数:
from flask import request
@app.route('/search')
def search():
query = request.args.get('q')
return f'You searched for: {query}'
访问 http://127.0.0.1:5000/search?q=Flask
会返回 “You searched for: Flask”。
处理 POST
请求
如果你需要处理表单提交的数据,可以使用 POST
请求。下面是一个简单的表单提交示例:
from flask import request, render_template
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
return f'Username: {username}, Password: {password}'
return render_template('login.html')
这个视图函数处理 /login
路由,GET
请求会返回一个登录表单,POST
请求会返回提交的用户名和密码。
Flask 使用 Jinja2 作为模板引擎,用于动态渲染 HTML 页面。在模板中,可以使用变量和控制结构(如 if
、for
等)来构建动态内容。
例如,创建一个模板 index.html
:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Template Exampletitle>
head>
<body>
<h1>Hello, {{ name }}!h1>
body>
html>
然后在视图函数中传递 name
变量:
from flask import render_template
@app.route('/greet')
def greet():
return render_template('index.html', name='Flask User')
访问 http://127.0.0.1:5000/greet
,你将看到 “Hello, Flask User!”。
Flask 支持通过扩展(如 Flask-SQLAlchemy)来与数据库进行交互。SQLAlchemy 是一个强大的 ORM(对象关系映射)工具,可以将数据库表映射为 Python 类,并进行操作。
安装 Flask-SQLAlchemy:
pip install flask_sqlalchemy
然后,在 Flask 应用中配置数据库并使用 SQLAlchemy 进行数据操作:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), unique=True, nullable=False)
@app.route('/add_user')
def add_user():
user = User(username='John Doe')
db.session.add(user)
db.session.commit()
return 'User added successfully!'
Flask 是一个非常灵活和轻量级的 Web 框架,适合用于快速开发 Web 应用和 API。它拥有简洁的 API,易于上手,而且可以通过丰富的扩展来实现更强大的功能。
在这篇博客中,我们介绍了如何安装 Flask、创建简单的 Web 应用、定义路由、处理用户输入、使用 Jinja2 模板引擎以及与数据库交互。
通过掌握 Flask 的基本用法,你可以开始构建更复杂的 Web 项目。