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

Python Web 框架之 Flask

Flask 框架简介

Flask 是一个轻量级的 Python Web 框架,被称为 “微框架”。它旨在保持核心简单且易于扩展,核心功能仅提供路由系统和请求处理等基础功能,而诸如数据库集成、表单验证等功能则通过扩展来实现。这使得 Flask 非常适合初学者入门 Web 开发,同时也适用于构建小型到中型规模的 Web 应用程序。

安装 Flask

使用 pip 进行安装,在命令行中输入:

pip install flask

若使用 Python3 且安装了多个 Python 版本,可能需使用 pip3

pip3 install flask

第一个 Flask 应用

创建一个简单的 Flask 应用示例代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()
  • 代码解释:
    • 首先从 flask 模块导入 Flask 类。
    • 创建一个 Flask 类的实例 app__name__ 是 Python 中的一个特殊变量,它会根据该脚本是作为主程序运行还是作为模块导入而有所不同,这里将其传递给 Flask 类用于确定应用的根路径。
    • 使用 @app.route('/') 装饰器来定义一个路由。@app.route 是 Flask 中用于定义 URL 规则的装饰器,'/' 表示根路径,当用户访问应用的根路径时,会执行下面定义的函数 hello_world
    • hello_world 函数返回一个字符串 'Hello, World!',这个字符串会作为响应内容返回给客户端。
    • if __name__ == '__main__': 这个条件判断确保只有在直接运行该脚本时,app.run() 才会被执行,启动 Flask 应用。app.run() 用于启动 Flask 内置的开发服务器,默认监听在 127.0.0.1:5000

路由系统

动态路由:可以在路由中定义动态部分。例如:

from flask import Flask

app = Flask(__name__)


@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'


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

这里 <username> 是一个动态部分,当访问 /user/john 时,show_user_profile 函数会接收到 john 作为参数,并返回 User john

指定请求方法:默认情况下,路由只接受 GET 请求。可以通过 methods 参数指定允许的请求方法。例如:

from flask import Flask, request

app = Flask(__name__)


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return '处理 POST 请求,例如登录验证'
    else:
        return '显示登录表单'


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

在这个例子中,/login 路由既接受 GET 请求(显示登录表单),也接受 POST 请求(处理登录验证)。request 是 Flask 中用于处理请求相关信息的对象,通过 request.method 可以获取当前请求的方法。

模板引擎

Flask 内置支持使用 Jinja2 模板引擎。首先在项目目录下创建一个 templates 文件夹,用于存放模板文件。

  • 创建一个模板文件 index.html
<!DOCTYPE html>
<html>

<head>
    <title>Flask 模板示例</title>
</head>

<body>
    <h1>你好,{{ name }}</h1>
</body>

</html>
  • 修改 Flask 应用代码来渲染模板:
from flask import Flask, render_template

app = Flask(__name__)


@app.route('/greet/<name>')
def greet(name):
    return render_template('index.html', name = name)


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

这里 render_template 函数用于渲染指定的模板文件,并将变量 name 传递给模板。当访问 /greet/alice 时,模板中的 {{ name }} 会被替换为 alice

请求处理与响应

  • 获取请求数据:如果是 POST 请求提交表单数据,可以通过 request.form 获取。例如:
from flask import Flask, request

app = Flask(__name__)


@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    password = request.form.get('password')
    return f'用户名: {username}, 密码: {password}'


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

这里假设表单中有 usernamepassword 两个字段,通过 request.form.get() 方法获取对应的值。

  • 设置响应头:可以通过 Response 对象来设置响应头。例如:
from flask import Flask, Response

app = Flask(__name__)


@app.route('/custom - header')
def custom_header():
    response = Response('带有自定义头部的响应')
    response.headers['Custom - Header'] = '这是自定义头部内容'
    return response


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

在这个例子中,创建了一个 Response 对象,并设置了一个自定义的响应头 Custom - Header


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

相关文章:

  • 精密矫平机:解锁工业制造的“平整密码”,打造零瑕疵的金属艺术
  • PHP基本知识
  • 【IDEA】 配置安装 Leetcode 插件
  • 奇迹科技:蓝牙网关赋能少儿篮球教育的创新融合案例研究
  • CentOS与LAMP详解:从概念到实战!!!
  • Redis 内存淘汰策略
  • Python Cookbook-4.8 二维阵列变换
  • 前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb
  • 蓝桥备赛(23)算法篇【枚举】
  • Hive与Spark的UDF:数据处理利器的对比与实践
  • 什么是量化?BERT 模型压缩的秘密武器
  • 深度解读DeepSeek:开源周(Open Source Week)技术解读
  • CCF-CSP认证 202209-2何以包邮?
  • jupyter使用过程中遇到的问题
  • 【Android】我们是如何优化安卓应用大小至10MB以下的
  • 基于Spring Boot的企业内管信息化系统的设计与实现(LW+源码+讲解)
  • 神经网络(Neural Network, NN)基础教程
  • python环境出现出现 pip: command not found 错误
  • python——UI自动化(1) selenium之介绍和环境配置
  • k8s主要控制器简述(一)ReplicaSet与Deployment