Flask 框架概述及应用案例

Flask 框架概述

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它属于微框架类别,因为它不需要太多的框架代码即可开始开发应用程序。Flask 提供了开发者友好的环境,并且非常灵活,适用于构建从小型单页应用到大型复杂网站的各类项目。

Flask 的特点:

  1. 轻量级

    • 不包含数据库抽象层、表单验证等功能,但可以使用扩展来添加这些功能。
    • 很容易上手,对于初学者来说是一个很好的起点。
  2. 灵活性

    • 开发者可以选择自己需要的功能和工具,如 ORM(对象关系映射)、表单验证等。
    • 可以与多种数据库和缓存系统集成。
  3. 扩展性

    • 通过安装扩展可以很容易地为 Flask 添加新功能,如用户认证、ORM 支持等。
  4. 调试和开发工具

    • 内置服务器和调试器,便于开发和测试。
    • 自动代码重载,当代码发生改变时自动重启服务器。
  5. Jinja2 模板引擎

    • 默认使用 Jinja2 作为模板引擎,支持复杂的逻辑控制结构。
  6. Werkzeug WSGI 工具包

    • Flask 使用 Werkzeug 作为它的 WSGI 工具包,提供实用的辅助函数和开发服务器。

Flask 的基本结构:

  • 路由:用于定义 URL 和处理函数之间的映射。
  • 视图函数:处理客户端请求并返回响应。
  • 模板:用于生成动态 HTML 页面。
  • 静态文件:如 CSS、JavaScript 文件,Flask 有专门的目录来存放这些文件。

如何开始使用 Flask:

  1. 安装 Flask

    • 使用 pip 安装 Flask:pip install flask
  2. 创建第一个 Flask 应用

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return 'Hello, World!'
    
    if __name__ == '__main__':
        app.run()
    
  3. 运行应用

    • 运行上述脚本,打开浏览器访问 http://127.0.0.1:5000/ 即可看到 “Hello, World!”。

Flask 的应用场景:

  • 小型网站或博客:适合于快速搭建个人博客或小型企业网站。
  • API 服务:可以用来构建 RESTful API 服务。
  • 原型和概念验证:由于其简单性和灵活性,非常适合快速原型开发。

总结:Flask 是一个非常适合那些希望保持代码简洁且易于维护的开发者的框架。它可以轻松地与其他工具和技术栈集成,非常适合构建高度定制化的 Web 应用程序。

应用案例

让我们构建一个简单的 Flask 应用示例,该应用将实现以下功能:

  1. 主页显示欢迎消息。
  2. 用户可以提交表单来注册。
  3. 注册后,用户的姓名和电子邮件地址会被存储在 SQLite 数据库中。
  4. 用户可以通过另一个页面查看所有已注册用户的列表。

首先,你需要确保你的环境中已经安装了 Flask 和相关依赖。如果还没有安装,你可以使用以下命令安装 Flask 和 Flask-SQLAlchemy 扩展:

pip install flask flask-sqlalchemy

接下来,我们创建一个名为 app.py 的文件,其中包含 Flask 应用的核心代码。

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

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

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

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        name = request.form['name']
        email = request.form['email']
        user = User(name=name, email=email)
        db.session.add(user)
        db.session.commit()
        return redirect(url_for('users'))
    return render_template('register.html')

@app.route('/users')
def users():
    users = User.query.all()
    return render_template('users.html', users=users)

if __name__ == '__main__':
    db.create_all()
    app.run(debug=True)

在这个例子中,我们创建了一个简单的 Flask 应用,它包括三个路由:

  • /: 显示主页。
  • /register: 处理用户注册的表单提交,并将数据保存到数据库。
  • /users: 显示所有用户的列表。

接下来,我们需要创建三个 HTML 模板文件:home.html, register.html, 和 users.html。这些文件将位于 templates 文件夹中。

templates/home.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    <h1>Welcome to our site!</h1>
    <p><a href="{{ url_for('register') }}">Register Now</a></p>
</body>
</html>

templates/register.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
    <h1>Register</h1>
    <form method="post" action="{{ url_for('register') }}">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <button type="submit">Submit</button>
    </form>
</body>
</html>

templates/users.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Users</title>
</head>
<body>
    <h1>Registered Users</h1>
    <ul>
        {% for user in users %}
            <li>{{ user.name }} - {{ user.email }}</li>
        {% endfor %}
    </ul>
</body>
</html>

现在,你可以运行 app.py 并通过浏览器访问 http://127.0.0.1:5000/ 来查看你的 Flask 应用。

这个简单的应用演示了如何使用 Flask 创建基本的路由、表单处理以及如何与数据库交互。你可以在此基础上进一步扩展功能,例如增加登录认证、更复杂的表单验证等。

案例扩展

我们可以进一步扩展应用的功能。这次我们将添加用户登录功能,并使用 Flask-Login 扩展来管理用户会话。此外,我们还会添加一些基本的表单验证。

步骤 1: 安装 Flask-Login

首先,你需要安装 Flask-Login 扩展,它可以帮助你处理用户会话和登录状态:

pip install flask-login

步骤 2: 修改 app.py

接下来,我们修改 app.py 文件以添加登录功能:

from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
from werkzeug.security import generate_password_hash, check_password_hash

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'  # 设置一个安全的密钥
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'  # 设置登录页面的端点名称


class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(128), nullable=False)


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))


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


@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        name = request.form['name']
        email = request.form['email']
        password = request.form['password']
        hashed_password = generate_password_hash(password, method='sha256')
        new_user = User(name=name, email=email, password=hashed_password)
        db.session.add(new_user)
        db.session.commit()
        flash('Your account has been created! You are now able to log in', 'success')
        return redirect(url_for('login'))
    return render_template('register.html')


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']
        user = User.query.filter_by(email=email).first()
        if user and check_password_hash(user.password, password):
            login_user(user)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(url_for('home'))
        else:
            flash('Login Unsuccessful. Please check email and password', 'danger')
    return render_template('login.html')


@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('home'))


@app.route('/users')
@login_required
def users():
    users = User.query.all()
    return render_template('users.html', users=users)


if __name__ == '__main__':
    db.create_all()
    app.run(debug=True)

步骤 3: 创建表单验证和登录表单

我们将创建两个新的模板文件:login.htmlregister.html,并在其中添加基本的表单验证。

templates/login.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form method="post" action="{{ url_for('login') }}">
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="submit">Login</button>
    </form>
</body>
</html>
templates/register.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
    <h1>Register</h1>
    <form method="post" action="{{ url_for('register') }}">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="submit">Register</button>
    </form>
</body>
</html>

步骤 4: 测试应用

现在你可以运行 app.py 并通过浏览器访问 http://127.0.0.1:5000/ 来测试你的应用。你应该能够注册新用户、登录并查看用户列表。

请注意,为了简化示例,这里没有使用 WTForms 或 Flask-WTF 进行表单验证。如果你想要更严格的表单验证,可以考虑使用这些库。此外,密码哈希和安全性的实现也较为基础,实际部署时需要考虑更多的安全措施,例如使用 HTTPS、更强的密码策略等。

这就是一个基本的 Flask 应用,包括用户注册、登录和会话管理。你可以在此基础上继续扩展更多功能,比如添加更多的安全性检查、增强用户界面、实现用户权限管理等。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值