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

一、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 项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莫忘初心丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值