Flask 入门指南:初学者教程
2023-08-27 13:52:58
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 具有轻量级、易用性、灵活性和广泛扩展库的优点。