当前位置: 首页 > article >正文

python flask 使用教程 快速搭建一个 Web 应用

目录

        • 一、Flask 简介
        • 二、Flask 安装
        • 三、创建一个简单的 Flask 应用
        • 四、Flask 路由与视图
        • 五、接收和处理用户输入
        • 六、模板引擎 Jinja2
        • 七、Flask 与数据库
        • 八、总结

一、Flask 简介

Flask 是一个轻量级的 Python Web 框架,旨在帮助开发者快速搭建 Web 应用。相比于 Django 等重量级框架,Flask 更加简洁和灵活,非常适合用于小型 Web 项目的开发,甚至可以用于构建 RESTful API。

Flask 的核心特性包括:

  • 简洁的 API:Flask 使用简单且直观的 API,开发者可以快速上手。
  • 灵活性高:Flask 不会过多限制开发者的选择,它给开发者提供了更多的自由度。
  • 扩展性:Flask 支持丰富的扩展,满足数据库、表单验证、用户认证等多种需求。

二、Flask 安装

要使用 Flask,首先需要安装 Flask 库。打开命令行,使用 pip 安装:

pip install flask

三、创建一个简单的 Flask 应用
  1. 创建项目文件夹

    假设我们要创建一个名为 flask_demo 的项目,首先创建一个文件夹:

    mkdir flask_demo
    cd flask_demo
    
  2. 创建 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 应用并开启调试模式,方便开发时查看错误信息。
  3. 运行应用

    在命令行中执行以下命令启动 Flask 应用:

    python app.py
    

    启动成功后,访问浏览器,输入 http://127.0.0.1:5000/,你应该能够看到浏览器显示“Hello, World!”。


四、Flask 路由与视图

在 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) 获取用户输入数据。常见的有 GETPOST 请求。

  1. 处理 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”。

  2. 处理 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 请求会返回提交的用户名和密码。


六、模板引擎 Jinja2

Flask 使用 Jinja2 作为模板引擎,用于动态渲染 HTML 页面。在模板中,可以使用变量和控制结构(如 iffor 等)来构建动态内容。

例如,创建一个模板 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 Example</title>
</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 支持通过扩展(如 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 项目。


http://www.kler.cn/a/555933.html

相关文章:

  • react 踩坑记 too many re-renders.
  • 信号与系统研究
  • 基于Python+Sqlite实现的选课系统
  • 【GreatSQL优化器-15】index merge
  • 改BUG:Mock测试的时候,when失效
  • 深入解析 Uniapp 的页面结构
  • 【蒸馏(1)】UniDistill:用于BEV 3D检测的通用跨模态蒸馏框架!
  • 量子比特的实现与优化技术:解密量子计算的核心
  • 《耀百岁中医养生平台的技术革命——千年中医的智能觉醒》
  • HarmonyOS NEXT 前沿技术理论解析与学习路径(API 12+)
  • C# WPF调用C++ dll 结合opencv
  • AcWing走迷宫-最短路问题-BFS求解
  • 解决Spring Data JPA set值后自动更新到数据库问题
  • 第一个CMAKE项目hello cmake
  • QT基础八、与时间相关的UI控件
  • 【鸿蒙开发】第四十三章 Notification Kit(用户通知服务)
  • ClickHouse分布式高可用实战:ReplicatedMergeTree引擎深度解析与代码实践
  • LangChain:AI大模型开发与分布式系统设计
  • 2000字,极简版华为数字化转型方法论
  • strapi4,strapi5最新版安装部署教程