返回

Flask 入门指南:初学者教程

后端

Flask:初学者入门指南

简介

Flask 是一款轻量级、易于使用的 Python Web 框架,深受初学者的青睐。本文将带你从零开始探索 Flask,打造你的首个 Flask 应用程序。

入门

第一步是安装 Flask,使用 pip 命令即可:

pip install flask

接下来,创建一个新的 Flask 项目并创建一个 Flask 应用:

mkdir my_flask_app
cd my_flask_app
python3 -m venv venv
source venv/bin/activate
pip install flask

在 app.py 文件中添加以下代码:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello, World!"

if __name__ == "__main__":
    app.run()

运行 python3 app.py 启动应用,访问 http://127.0.0.1:5000/ 即可看到你的第一个 Flask 应用。

路由

路由是 Flask 的核心功能,允许你将 URL 映射到函数。使用 @app.route() 装饰器定义路由:

@app.route("/hello_world/")
def hello_world():
    return "Hello, World!"

访问 http://127.0.0.1:5000/hello_world/ 触发 hello_world() 函数。

模板

Flask 使用 Jinja2 作为模板引擎,便于创建 HTML 模板。render_template() 函数将模板转换为 HTML:

@app.route("/")
def index():
    return render_template("index.html")

创建一个名为 index.html 的模板,添加如下内容:

<!DOCTYPE html>
<html>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

访问 http://127.0.0.1:5000/ 渲染模板,显示 "Hello, World!"。

表单

Flask 支持表单处理,使用 request 对象获取表单字段值:

@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "POST":
        name = request.form["name"]
        return f"Hello, {name}!"
    else:
        return """
            <form method="POST">
                <input type="text" name="name">
                <input type="submit" value="Submit">
            </form>
        """

访问 http://127.0.0.1:5000/,提交表单即可看到 "Hello, [name]!"。

数据库操作

Flask 支持多种数据库,如 SQLite、MySQL、PostgreSQL。安装 SQLAlchemy,将 Python 对象映射到数据库表:

pip install sqlalchemy
from flask_sqlalchemy import SQLAlchemy

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///my_database.db"
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

创建、读取、更新、删除 (CRUD) 操作使用 SQLAlchemy 执行:

user = User(name="John Doe")
db.session.add(user)
db.session.commit()
users = User.query.all()
for user in users:
    print(user.name)

扩展

Flask 提供丰富的扩展,添加新功能。例如,使用 Flask-WTF 进行表单验证:

pip install Flask-WTF
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField

class MyForm(FlaskForm):
    name = StringField("Name", validators=[DataRequired()])
    submit = SubmitField("Submit")

在视图中,使用 MyForm 进行表单验证:

@app.route("/", methods=["GET", "POST"])
def index():
    form = MyForm()
    if form.validate_on_submit():
        name = form.name.data
        return f"Hello, {name}!"
    else:
        return render_template("index.html", form=form)

结论

Flask 为 Web 开发初学者提供了直观、轻量级的平台。通过理解路由、模板、表单、数据库操作和扩展等核心概念,你可以构建功能强大的 Web 应用程序。

常见问题解答

1. Flask 与 Django 的区别是什么?

Django 是一个全栈 Web 框架,提供强大的功能,而 Flask 是一种轻量级框架,更适合小型项目。

2. Flask 可以用于哪些类型的应用程序?

Flask 可用于创建各种 Web 应用程序,从简单的个人博客到复杂的企业解决方案。

3. Flask 的学习曲线陡峭吗?

Flask 以其学习曲线平缓而闻名,非常适合初学者入门 Web 开发。

4. Flask 支持哪些数据库?

Flask 通过 SQLAlchemy 支持多种数据库,包括 SQLite、MySQL、PostgreSQL 和 Oracle。

5. Flask 有哪些优点?

Flask 具有轻量级、易用性、灵活性和广泛扩展库的优点。