在Flask中,如何定义路由并处理HTTP请求的不同方法(GET、POST等)?

简介: 在Flask中,路由通过`@app.route()`装饰器定义,如`/hello`示例处理GET请求。要支持POST,可添加`methods=['POST']`。单一函数可处理多个方法,检查`request.method`。动态路由如`/user/<username>`允许传入变量到函数。这些基础构成Flask处理HTTP请求的核心。

在Flask中,我们使用装饰器来定义路由并处理HTTP请求的不同方法。

  1. 定义路由:我们使用@app.route()装饰器来定义一个路由。例如,要定义一个响应GET请求的'/hello'路由,我们可以这样做:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/hello')
    def hello():
        return 'Hello, World!'
    
  2. 处理不同的HTTP方法:我们可以使用相同的路由,但通过不同的装饰器来处理不同的HTTP方法。例如,要处理对'/hello'的POST请求,我们可以添加一个新的函数并用@app.route()装饰器指定相同的路由和methods参数:
    @app.route('/hello', methods=['POST'])
    def hello_post():
        return 'You posted to Hello!'
    
  3. 单一函数处理多个HTTP方法:我们也可以在单一的函数中处理多种HTTP方法,方法是在@app.route()装饰器中指定methods参数为一个包含所有需要支持的方法的列表。然后,在函数内部,我们可以通过检查request.method属性来确定如何处理请求:

    from flask import request
    
    @app.route('/hello', methods=['GET', 'POST'])
    def hello_multimethod():
        if request.method == 'GET':
            return 'Hello, World!'
        elif request.method == 'POST':
            return 'You posted to Hello!'
    
  4. 动态路由:我们还可以使用尖括号 <variable_name> 语法在路由中定义变量部分。当URL匹配这个模式时,尖括号中的部分将作为关键字参数传递给视图函数:
    @app.route('/user/<username>')
    def show_user_profile(username):
        return f'User {username}'
    

这些是Flask中定义路由和处理不同HTTP方法的基本方式。通过组合这些技术,我们可以构建出能够处理各种HTTP请求的Web应用。

相关文章
|
网络架构 Python
【flask入门系列】处理请求之url 路径参数的获取以及转换器的使用
这节我们写一下url路径参数的获取以及转换器的使用,学一下如何在我们的的url路径中加参数以及如何使用转换器,并且自定义转换器。
1103 0
【flask入门系列】处理请求之url 路径参数的获取以及转换器的使用
|
4月前
|
人工智能 供应链 算法
1688搜索的“读心术”:从“匹配文字”到“理解人心”的升维竞争
新一代AI搜索的本质,是构建一个动态的、多维度的供需匹配网络。它不仅仅是排序算法的升级,更是整个平台认知能力的飞跃。 传统 1688 搜索排序的底层逻辑,本质是 “机械匹配”—— 系统通过算法计算用户输入关键词与商品标题、属性、详情页文本中词条的重合度,匹配度越高,商品排名越靠前。这种模式虽简单易操作,却催生了大量行业乱象,比如:商家与平台算法的关系是“博弈”;搜索结果的顶部不再是“最相关”或“最优质”的商品,而是“最懂算法漏洞”的商品;它无法理解“定制”的深度和广度。
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
157781 30
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
6164 4
|
存储 NoSQL 中间件
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
在当今的数字化时代,用户认证是任何在线服务安全性的基石。本文将简明扼要地介绍登录注册流程中的核心概念:HTTP无状态性、Session、Token与JWT,并详细阐述两种实用登录方式—— 手机号登录验证(借助容联云/云通讯服务) 与钉钉第三方登录。我们将探讨这些概念的基本原理,并深入解析两种登录方式的实现流程,旨在帮助开发者提升用户认证的安全性与便捷性。
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
监控 算法 自动驾驶
目标检测算法:从理论到实践的深度探索
【7月更文第18天】目标检测,作为计算机视觉领域的核心任务之一,旨在识别图像或视频中特定对象的位置及其类别。这一技术在自动驾驶、视频监控、医疗影像分析等多个领域发挥着至关重要的作用。本文将深入浅出地介绍目标检测的基本概念、主流算法,并通过一个实际的代码示例,带您领略YOLOv5这一高效目标检测模型的魅力。
1358 11
|
SQL 关系型数据库 数据库连接
Python连接线上数据库的实战指南
Python连接线上数据库的实战指南
1101 1
|
JSON Go 网络架构
langchain 入门指南 - 自动选择不同的大模型
langchain 入门指南 - 自动选择不同的大模型
752 0
|
Java
掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场
掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场
334 0