📜  烧瓶文档 - Python (1)

📅  最后修改于: 2023-12-03 14:56:11.778000             🧑  作者: Mango

烧瓶文档 - Python

Flask

简介

Flask是一个轻量级的Web应用框架,基于Python语言开发。它使用了Jinja2模板引擎和Werkzeug工具包,提供了快速构建Web应用的能力。Flask不需要任何额外的工具或者库,可以方便地实现RESTful API和Web应用程序。

安装

在安装Flask之前,请确保已经安装了Python环境(推荐使用Python 3版本)。

使用pip安装Flask:

pip install Flask
快速上手

以下是一个使用Flask搭建的非常简单的Web应用程序。它只是在访问根目录时返回了一个“Hello, Flask!”的字符串。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Flask!"

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

运行这个程序,打开浏览器访问http://127.0.0.1:5000/,就可以看到“Hello, Flask!”的字符串。这个程序使用了Flask的@app装饰器来定义了一个路由,使得当客户端向根目录发起请求时,可以执行hello视图函数并返回响应。

路由

路由在Flask中非常重要,它是我们将请求映射到视图函数的核心。Flask支持路由的定义方式有两种。

一种是装饰器的方式,已经在上一个示例中见过:

@app.route("/")
def hello():
    return "Hello, Flask!"

这个装饰器定义了一个路由,使得当客户端向根目录发送请求时,可以调用hello视图函数并返回响应。

另一种是通过app.add_url_rule()方式手动定义路由,例如:

from flask import Flask

app = Flask(__name__)

def hello():
    return "Hello, Flask!"

app.add_url_rule("/", view_func=hello)

这个程序定义了一个包含一个视图函数的路由。app.add_url_rule()函数的第一个参数是路由路径,第二个参数是视图函数。在这个例子中,当客户端向根目录发送请求时,可以调用hello视图函数并返回响应。

视图函数

视图函数是Flask应用程序的处理逻辑。每个视图函数都可以返回一个响应对象,用于向客户端响应请求。我们已经在上述示例中看到了一个最简单的视图函数hello()

视图函数可以通过Flask提供的请求、会话、上下文等对象,来实现对请求的读取、解析等操作。

以下是一个使用request.args来获取GET请求参数的简单示例:

from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def hello():
    name = request.args.get("name")
    return f"Hello, {name or 'Flask'}!"

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

在这个程序中,如果客户端向根目录发送一个带有name参数的GET请求,那么视图函数将返回“Hello, name!”的字符串。

模板

模板是一种用于生成HTML代码、XML等文档的技术。在Flask中,我们可以使用Jinja2模板引擎来生成响应内容。

以下是一个使用模板的简单示例:

from flask import Flask, render_template

app = Flask(__name__)
app.config.from_mapping(
    SECRET_KEY='dev'
)

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

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

在这个程序中,当客户端向根目录发送请求时,home()视图函数会返回一个使用render_template()函数生成的HTML页面。render_template()函数会将指定的HTML文件当做模板来处理,将其中的占位符替换成实际的内容。

数据库

Flask使用ORM(对象关系映射)来处理数据库操作。常见的ORM库包括SQLAlchemy和Peewee等。

以下是一个使用SQLAlchemy来处理数据库操作的简单示例:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_mapping(
    SQLALCHEMY_DATABASE_URI='sqlite:////tmp/test.db',
    SQLALCHEMY_TRACK_MODIFICATIONS=False,
    SECRET_KEY='dev',
)

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

@app.route("/")
def home():
    users = User.query.all()
    return "<br>".join([user.username for user in users])

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

在这个程序中,我们使用了SQLAlchemy来定义了一个User模型,即一个数据库表。在home()视图函数中,我们使用User.query.all()查询出了所有的用户数据,并将它们的用户名返回给客户端。

总结

Flask是一个轻量级的Web应用框架,使用Python语言开发。它提供了快速构建Web应用和API的能力,具有简单、易用、灵活的特点。

本文简单介绍了Flask的安装和使用方法,同时介绍了路由、视图函数、模板和数据库等方面的内容。希望这些内容能够对想要学习Flask的程序员有所帮助。