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

【Flask】二、Flask 路由机制

目录

什么是路由?

Flask中的路由

基本路由

动态路由

路由中的HTTP方法

路由函数返回


        在Web开发中,路由是将URL映射到相应的处理函数的过程。Flask是一个轻量级的Web应用框架,提供了简单而强大的路由机制,使得开发者能够轻松地将用户请求的URL映射到Python函数。

什么是路由?

        在Web应用中,路由决定了用户请求的URL应该由哪个函数来处理。当用户在浏览器中输入一个URL或者点击一个链接时,Web服务器需要知道如何处理这个请求,这就是路由的作用。

Flask中的路由

Flask使用装饰器@app.route()来定义路由。这个装饰器告诉Flask哪个URL应该触发对应的函数。

基本路由

最基本的路由是将URL直接映射到函数。

from flask import Flask
app = Flask(__name__)@app.route('/')
def home():return 'Hello, Flask!'if __name__ == '__main__':app.run(debug=True)

在上面这个例子中,我们定义了一个路由/,当用户访问应用的根目录时,会触发home函数,并返回字符串"Hello, Flask!"。

动态路由

Flask还允许我们定义动态路由,即URL中包含变量的部分。

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

在这两个例子中,<username><int:post_id>是动态部分,Flask会将URL中对应的部分作为参数传递给函数。<username>可以匹配任何字符串,而<int:post_id>则限制只能匹配整数。

测试结果如下

路由规则支持不同类型的参数和匹配规则,post_id前的int为路由规则的类型,以下为常见的路由规则:

  • 字符串(默认): 匹配任意字符串。
  • 整数(<int:name>): 匹配整数值。
  • 浮点数(<float:value>): 匹配浮点数值。
  • 路径(<path:name>): 匹配任意字符,包括斜杠 /

路由中的HTTP方法

默认情况下,路由只响应GET请求。Flask允许我们指定路由响应特定的HTTP方法。

@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':return do_the_login()else:return show_the_login_form()

上面的例子中,/login路由可以响应GET和POST请求。根据请求的方法,执行不同的函数。测试结果如下。

路由函数返回

视图函数可以返回多种类型的响应:

  • 字符串:返回纯文本响应。
  • HTML:返回 HTML 页面。
  • JSON:返回 JSON 数据。
  • Response 对象:自定义响应。

附全篇所有代码,以供测试使用 

from flask import Flask, request, jsonify, Responseapp = Flask(__name__)@app.route('/')
def home():return 'Hello, Flask!'@app.route('/user/<username>')
def show_user_profile(username):return f'User {username}'@app.route('/post/<int:post_id>')
def show_post(post_id):return f'Post {post_id}'@app.route('/json')
def json_response():data = {'key': 'value'}return jsonify(data)@app.route('/custom')
def custom_response():response = Response('Custom response with headers', status=200)response.headers['X-Custom-Header'] = 'Value'return responsedef do_the_login():return f'post请求,进行登录'def show_the_login_form():return f'get请求,展示登录表单'@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':return do_the_login()else:return show_the_login_form()if __name__ == '__main__':app.run(debug=True)

测试结果如下

相关文章:

【Flask】二、Flask 路由机制

目录 什么是路由&#xff1f; Flask中的路由 基本路由 动态路由 路由中的HTTP方法 路由函数返回 在Web开发中&#xff0c;路由是将URL映射到相应的处理函数的过程。Flask是一个轻量级的Web应用框架&#xff0c;提供了简单而强大的路由机制&#xff0c;使得开发者能够轻松…...

Java项目实战II基于Spring Boot的交通管理在线服务系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化…...

【PythonWeb开发】Flask-RESTful视图类基础知识

flask_restful 是一个扩展库&#xff0c;它为 Flask 提供了快速构建 RESTful API 的功能。使用 flask_restful 可以简化 RESTful API 的开发过程&#xff0c;减少样板代码&#xff0c;并且提供了一些高级特性&#xff0c;如 HTTP 方法的映射、资源路由的定义等。 在flask_restf…...

Kubernetes——part10-2 kubernetes 日志收集方案 EFK

一、EFK 1.1 EFK介绍 EFK为elasticsearch、fluentd、kibana的简称&#xff0c;本案例主要对kubernetes集群日志收集。 1.2 Fluentd介绍 fluentd是一款开源的日志收集工具&#xff0c;其于2016年11月8日被云原生计算基金会录取&#xff0c;并于2019年毕业。 Fluentd优势&…...

mockito+junit完成单元测试

一&#xff1a;单元测试的特点 配合断言使用&#xff08;可以杜绝System.out&#xff09;可以重复执行不依赖环境不会对数据产生影响spring的上下文环境不是必须的一般都需要配合mock类框架来实现 二&#xff1a;常用的mock类框架 mockito 官网&#xff1a;Mockito framew…...

基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…...

CUDA环境安装终极指南——Linux(其它系统也一样)

文章目录 前言检查驱动配置nvcc安装cudnn完活 前言 不用看其它文章了&#xff0c;这篇文章保你不踩任何坑&#xff0c;安装方法简单快速 检查驱动 检查驱动是否安装&#xff0c;输入以下命令 nvidia-smi如果驱动已经安装&#xff0c;则可跳过此步&#xff0c;否则&#xff…...

安卓开发之登录页面(跳转版)

目录 前言&#xff1a;基础夯实&#xff1a;效果展示&#xff1a;核心代码&#xff1a;网盘源码&#xff1a; 前言&#xff1a; 熟悉安卓开发的基础知识&#xff0c;了解&#xff0c;弹窗&#xff0c;两个页面进行跳转&#xff0c;页面的布局&#xff0c;按钮&#xff0c;文本…...

solidworks学习6吊环-20241030

solidworks学习6吊环 图 1 使用到的命名&#xff1a;拉伸曲面&#xff0c;旋转曲面&#xff0c;镜像实体&#xff0c;剪裁曲面&#xff0c; 前视基准面绘制 图 2 绘制旋转轴 图 3 旋转曲面 图 4 上视基准面绘制&#xff0c;标准圆边尺寸的时候需要按住shift键标注&#x…...

数据结构和算法-动态规划(3)-经典问题

动态规划常见问题 打家劫舍 题目 [力扣198] 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&…...

Java算法-一维前缀和与差分

一、一维前缀和 ① 什么是一维前缀和&#xff1f; &#x1f4da; 其实通过名字就能知道" 一维前缀和 "的意思&#xff1a; 通过一个一维数组"arr1"而创建的另一个一维数组"arr2"&#xff0c;"arr2"的每一个元素都是"arr1"…...

Elasticsearch 安装教程:驾驭数据海洋的星际导航仪

目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…...

【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信

前言 故事背景 简单说下背景&#xff0c;项目中需要用 ProtoBuf 协议转换请求参数&#xff0c;并通过 WebSocket 进行双向通信。重点&#xff01;一个是 web端&#xff08;Vue3 TS&#xff09;&#xff0c;一个是微信小程序端&#xff08;原生 JS&#xff09;。 剧情发展 …...

独立游戏开发者面临的挑战与困境

在当今竞争激烈的游戏市场中&#xff0c;独立游戏开发者面临着诸多挑战与困境。从游戏版号申请到游戏被抄袭&#xff0c;再到产品同质化以及流量获取难题&#xff0c;乃至外包内卷现象&#xff0c;每一个环节都考验着开发者的智慧与毅力。以下是对这些挑战与闲境的详细分析。 …...

KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice

第一部分&#xff1a;安装配置 nextcloud 准备 &#xff08;1&#xff09;启动一个 Anolis OS 8.9 虚拟机&#xff0c;见下图。该虚拟机为 anlisos8…0.2 虚拟机的 ssh、hostname 、IP地址都已配置好。 &#xff08;2&#xff09;宝塔面板也已安装好docker 一、环境 do…...

串口扫盲TTL,TX/TR/GND

1. 串口扫盲TTL,TX/TR/GND 1. 串口扫盲TTL,TX/TR/GND 1.1. TTL1.2. USB转TTL1.3. 串口通信1.4. 引脚缩写1.5. 参考资料 1.1. TTL TX(TXD) 来源于 Transmit 一词&#xff0c;意思为发送&#xff0c;发射RX(RXD) 来源于 Receive 一词 意思为接收&#xff0c;收到GND 地线&…...

Python酷库之旅-第三方库Pandas(181)

目录 一、用法精讲 836、pandas.api.types.is_file_like函数 836-1、语法 836-2、参数 836-3、功能 836-4、返回值 836-5、说明 836-6、用法 836-6-1、数据准备 836-6-2、代码示例 836-6-3、结果输出 837、pandas.api.types.is_list_like函数 837-1、语法 837-2、…...

Python数据分析NumPy和pandas(十七、pandas 二进制格式文件处理)

以二进制格式存储&#xff08;或序列化&#xff09;数据的一种简单方法是使用 Python 的内置 pickle 模块。同时&#xff0c;pandas 构造的对象都有一个 to_pickle 方法&#xff0c;该方法以 pickle 格式将数据写入磁盘。 我们先把之前示例用到的ex1.csv文件加载到pandas对象中…...

matlab计算相关物理参数

function Rx1Jetfire1_1(di,Ct,Tf,Tj,alpha,Ma,Mf,RH,P0,P,k,Cd,elta,deltaHc,tau,directory) % 一共15个独立变量&#xff0c;为了方便输入修改&#xff0c;所有变量存入Jetfire1_1excel表&#xff0c; % dj为孔口直径,m&#xff1b;Ct为燃料空气混合摩尔系数&#xff0c;可…...

nmcli、ip、ifcfg配置网络区分方法

文章目录 一、检查NetworkManager状态使用nmcli命令&#xff1a;检查NetworkManager服务状态&#xff1a; 二、检查ip命令的使用三、检查ifcfg文件查看/etc/sysconfig/network-scripts/目录&#xff1a;查看/etc/network/interfaces文件&#xff08;针对Debian系&#xff09;&a…...

5分钟搞定ECharts Tooltip显示问题:从滚动条到完美适配屏幕的保姆级教程

5分钟搞定ECharts Tooltip显示问题&#xff1a;从滚动条到完美适配屏幕的保姆级教程 第一次用ECharts做数据可视化时&#xff0c;Tooltip的显示问题简直让人抓狂——要么内容太长出现滚动条&#xff0c;要么直接冲出屏幕边界。作为过来人&#xff0c;我整理了这份实战指南&…...

Ext2Read:Windows用户如何轻松读取Linux分区文件

Ext2Read&#xff1a;Windows用户如何轻松读取Linux分区文件 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 你是否遇到过这样的情况&a…...

突破限制:跨平台VMware macOS虚拟机部署全指南——非苹果硬件的macOS体验方案

突破限制&#xff1a;跨平台VMware macOS虚拟机部署全指南——非苹果硬件的macOS体验方案 【免费下载链接】unlocker VMware macOS utilities 项目地址: https://gitcode.com/gh_mirrors/unl/unlocker Unlocker是一款针对VMware Workstation和Player的开源补丁工具&…...

Netgear路由器Telnet功能启用工具:技术解析与实践指南

Netgear路由器Telnet功能启用工具&#xff1a;技术解析与实践指南 【免费下载链接】netgear_telnet Netgear Enable Telnet (New Crypto) 项目地址: https://gitcode.com/gh_mirrors/ne/netgear_telnet 一、功能价值&#xff1a;技术突破点与应用场景 1.1 核心功能概述…...

信号分析避坑指南:MATLAB里算相位差,为什么你的结果总是不准?

MATLAB相位差计算避坑指南&#xff1a;从频谱泄漏到四象限陷阱的深度解析 在信号处理领域&#xff0c;相位差计算看似简单却暗藏玄机。许多工程师在使用MATLAB进行相位差分析时&#xff0c;经常会遇到结果跳变、误差过大甚至完全不符合预期的情况。这并非MATLAB的"bug&quo…...

OpenClaw怎么换大模型?3步免费切换各种大模型配置教程

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 简单说一下&#xff1a;OpenClaw这玩意儿本身没带“大脑”&#xff0c;它就是个负责干活的躯壳&#xff0c;得靠接外面的大模型才能思考。想换个“大脑”其实就三步&am…...

Canvas Quest商业人像生成应用:电商模特图低成本自动化生产方案

Canvas Quest商业人像生成应用&#xff1a;电商模特图低成本自动化生产方案 1. 电商模特图的痛点与机遇 电商行业有个公开的秘密&#xff1a;商品展示图的拍摄成本往往比商品本身还高。特别是服装、配饰和美妆类目&#xff0c;每季新品需要拍摄上百套模特图&#xff0c;传统方…...

Open Interpreter连接LM Studio:双引擎部署实战教程

Open Interpreter连接LM Studio&#xff1a;双引擎部署实战教程 1. 开篇&#xff1a;为什么需要本地AI编程助手&#xff1f; 想象一下这样的场景&#xff1a;你手头有一个2GB的CSV数据文件需要分析处理&#xff0c;但云端AI工具有文件大小限制&#xff1b;或者你正在处理敏感…...

Navicat Premium Mac版试用期重置技术解析与实战指南

Navicat Premium Mac版试用期重置技术解析与实战指南 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题导入&#xff1a;Navicat试用期限制的技术挑战 Navicat Premium作为一…...

金仓V9智能运维揭秘:如何用国产数据库实现分钟级部署与自动化备份

金仓V9智能运维实战&#xff1a;从分钟级部署到自动化备份的全流程解析 在数字化转型浪潮中&#xff0c;数据库作为企业核心基础设施&#xff0c;其运维效率直接影响业务连续性。金仓数据库V9全平台版凭借智能运维体系&#xff0c;正在重新定义国产数据库的管理标准。本文将深入…...