Flask 路由基础和封装

项目实战 (15)--- 代码区块重构及相关技术落地 对本系统而言,核心就三个:1)有序管理所有video资源,并进行封装 2)有序管理所有连接资源,包括 vector db connection,cache connection,filesystem connection,websocket connection,3)封装核心服务,包括video资源预处理,query service,analysis service等。 阅读详情

Flask 路由

Flask中的路由是用来定义应用程序中的 URL 和处理函数之间的映射关系的,而URL则是用户访问应用程序的入口点。通过路由,我们可以将用户访问的 URL 映射到对应的视图函数上,从而实现不同的功能。

一、路由基础

1.定义路由:

我们可以使用 @app.route() 装饰器来定义路由。例如:

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

这样就定义了一个根路径 / 对应 index() 视图函数。

2.动态路由:

除了静态路径,Flask还支持动态路径。我们可以在路径中定义变量部分,然后在试图函数中通过参数获取这个动态值,如:

@app.route('/user/<username>')
def hello_user(username):
   return f'hello {username}!'
3.URL构建:

除了定义路由,我们还可以使用 url_for() 函数根据视图函数名生成相应的URL。

from flask import Flask,redirect,url_for,render_template
app = Flask(__name__)

@app.route('/admin')
def hello_admin():
    return 'hello admin'

@app.route('/guest/<guest>')
def hello_guest(guest):
    return f'hello {guest} as guest'

@app.route('/user/<name>')
def hello_user(name):
    if name=='admin':
        return redirect(url_for('hello_admin'))
    else:
        return redirect(url_for('hello_guest',guest=name))


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

在上面代码中, url_for('hello_admin') 会生成路径 /admin,url_for('hello_guest',guest=name) 会生成 /guest/<guest>。这样做可以避免在代码中硬编码URL,提高了灵活性和可维护性。

4.URL转换器:

Flask提供了多种URL转换器,如 int、float、path 等,可以用于更复杂的路由需求。
例如: @app.route('/post/<int:post_id>') 表示 post_id 参数必须是整数类型。

5.路由前缀:

有时我们需要为一组相关的路由添加公共的前缀,如 /api/v1/users。
这可以通过使用 Blueprint 实现,在注册Blueprint时指定前缀。

from flask import Flask, Blueprint
 
# 创建一个Flask应用
app = Flask(__name__)
 
# 创建一个Blueprint对象,并指定一个前缀
blueprint = Blueprint('my_blueprint', __name__, url_prefix='/api/user')
 
# 在这个 blueprint 中定义一个路由
@blueprint.route('/hello')
def hello():
    return 'Hello, World!'
 
# 将 blueprint 注册到应用上
app.register_blueprint(blueprint)
 
if __name__ == '__main__':
    app.run(debug=True)

当你访问/api/user/hello时,会调用hello函数并返回Hello, World!。

总之,Flask的路由机制提供了灵活强大的URL管理功能,可以帮助我们高效地组织和管理应用程序的URLs。合理利用路由和URL可以提高代码的可读性、可维护性和可扩展性。

二、路由的封装

对于Flask中的路由,除了直接使用@app.route() 装饰器定义路由外,我们还可以将其进行封装,以提高代码的可读性和可维护性。

一种常见的封装方式是创建一个独立的文件或模块来管理路由,然后在主应用程序中导入并使用。例如:

# app.py
from flask import Flask
from routes import init_routes

app = Flask(__name__)
init_routes(app)

if __name__ == '__main__':
    app.run()
# routes.py
from flask import Blueprint, render_template

bp = Blueprint('main', __name__)

@bp.route('/')
def index():
    return render_template('index.html')

@bp.route('/about')
def about():
    return render_template('about.html')

def init_routes(app):
    app.register_blueprint(bp)

在这个例子中:

我们在 routes.py 文件中创建了一个 Blueprint 对象 bp。Blueprint 是 Flask 提供的一种组织和管理路由的机制,可以将相关的路由和视图函数封装在一起。

在 routes.py 中,我们定义了两个路由函数 index() 和 about()。

在 app.py 中,我们导入 init_routes() 函数并调用它,将 app 对象传递给它。这个函数会将 bp Blueprint 注册到 app 上,从而将路由信息与主应用程序关联起来。

这样做的好处是:

将路由相关的代码集中在一个单独的文件或模块中,使得主应用程序更加简洁和可读。

可以在 routes.py 中添加更多的路由和视图函数,而不需要改动 app.py 中的代码。

如果需要对路由进行修改或扩展,只需要在 routes.py 中进行即可,而不会影响主应用程序的其他部分。

这种路由的封装方式是 Flask 开发中常见的一种模式,可以帮助我们更好地组织和管理应用程序的路由逻辑。

python使用flask封装restful API的实战代码 本文主要介绍了python使用flask封装restful API的实战代码,希望能对学习Python的同学们有所帮助。 文章目录 1. 简介 2. 任务1:求两数之和 2.1 代码讲解 2.2 执行讲解 3. 任务2:机器学习任务用于线上部署 阅读详情

相关推荐

【flask入门系列】路由和蓝图

这节我会介绍一下flask中的路由与蓝图,刚开始学其实大家不必着急,打好基础就行,python这门语言本身就比较简单,尤其对于学过django的同学来说,学习flask简直小菜一碟,完全可以用flask自己搭建一个像django那样的目录,使项目结构比较清晰。后期我也会专门出一个关于flask的小项目,帮助大家快速熟悉flask的项目结构以及使用,总之就一句话,使劲卷就完事了!!!

阿牛的博客 1167

API接口简单使用(一):Python中使用Flask封装网络接口

本文描述了在Python中使用Flask框架封装API接口的方法。通过实践操作,分别实现了简单文本返回接口、参数传递、JSON格式数据返回接口,以及图片返回接口。此外,文章还简单介绍了浏览器开发工具的使用,测试工具Postman的使用。文中对操作过程的描述详细具体,便于初学者进行使用。

积累,沉淀,温故而知新 4719

IAR调试CC1310的错误:Fatal error:Failed to connect to the XDS emlulator (Error -241 @ 0x0:)

从simplelink_cc13x0_sdk_2_10_00_36导入collector工程后,rebuild后进行debug,出现了如图错误:Fatal error:Failed to connect to the XDS emlulator (connect ICEPick)...(Error -241 @ 0x0)A router subpath could not be accessed....

qq_40417648的博客 6228

Python利用 flask 对代码块进行封装

先从原始代码体说明,一下是一个最简单的flask实现代码。注意:返回值格式,运行路径,中文页面内容乱码。1、对代码体进行封装。

Blue&boke 756

12V INPUT电源电路设计中的关键保护机制解析【精简】

本文深入解析了12V INPUT电源电路设计中不可或缺的关键保护机制。针对常见的电源反接、过压及浪涌等风险,文章详细拆解了PMOS防反接、TVS过压钳位、OVP芯片关断以及快速断电电路等核心防护方案的设计原理、选型要点与实战优化技巧,旨在帮助工程师构建可靠、经济的电源前端防御体系。

weixin_29158047的博客 228

Silvaco TCAD 2018安装后,如何配置TonyPlot 5.0.22.R并解决绘图报错?

本文详细介绍了在Windows系统上安装Silvaco TCAD 2018后,如何正确配置TonyPlot 5.0.22.R并解决常见的绘图报错问题。内容包括版本兼容性分析、环境变量设置、常见错误解决方案以及性能优化建议,帮助用户顺利完成仿真结果的可视化工作。

weixin_31031711的博客 420

Flask 常用封装,用户登录,验证码,用户信息获取,上传文件

Ben_boba的博客 1300

英特尔SVS:十亿级向量搜索的硬件优化与LVQ压缩实战

向量搜索作为处理高维嵌入数据的核心技术,其核心原理是通过近似最近邻(ANN)算法在海量数据中快速找到相似项,以解决传统暴力搜索在规模上的瓶颈。这项技术的核心价值在于为推荐系统、图像检索、自然语言处理等AI应用提供高效的相似性匹配能力,尤其在RAG架构中成为连接非结构化数据与大语言模型的关键基础设施。面对十亿级数据带来的内存与算力挑战,局部自适应向量量化(LVQ)等压缩技术通过减少存储开销并保持精度,而硬件层面的深度优化则利用AVX-512等指令集大幅提升计算效率。本文聚焦于英特尔开源的Scalable Ve

weixin_42526310的博客 553

flask 框架从0到1封装

基于常见的web项目框架,对整体的目录结构进行了调整,以实现代码的模块化,复用性;提高开发效率。

Martian 830

Synology File Station 官方 API 指南总结(中文版)

本文总结了Synology File Station官方API指南的核心内容,详细介绍了如何通过HTTP/HTTPS请求与DSM系统交互实现文件管理功能。主要内容包括: 基础API操作流程:从获取API信息、登录认证到执行请求和登出的完整工作流 请求构造与响应解析:JSON格式的请求参数处理和响应结果分析 关键API功能分类: 文件信息获取(List/Info) 文件搜索(Search) 收藏夹管理(Favorite) 缩略图生成(Thumb) 目录大小计算(DirSize) 文件上传(Upload)等 错

weixin_46001686的博客 2460

训练集、验证集、测试集!YOLO系列标签数量统计!

【代码】训练集、验证集、测试集!YOLO系列标签数量统计!

qq_26281057的博客 649

Flask |零基础进阶(上)

Flask是一个用 Python 编写的轻量级 Web 应用框架,属于"微框架"(Micro Framework)类型。它由 Armin Ronacher 开发,于 2010 年首次发布,目前由 Pallets 组织维护。适合快速开发 Web 应用和 API。组件作用Werkzeug处理底层 HTTP 协议(请求解析、响应生成、WSGI 兼容)Jinja2模板引擎,用于动态生成 HTML 页面(支持变量、循环、继承等)路由系统将 URL 映射到 Python 函数(如扩展生态。

Ama_tor的博客 1462

华为OD机试真题2025双机位A卷 Python&JavaScript 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 1459

Flask请求参数全解析:轻松玩转request对象

Flask请求参数处理与文件上传要点: 请求参数获取:通过request对象获取不同参数(form/POST数据、args/URL参数、values/全部参数),支持get()和getlist()方法安全获取值。 文件上传实现:使用request.files处理上传文件,需设置表单enctype为multipart/form-data,通过save()保存文件,建议使用uuid生成唯一文件名避免冲突。 消息闪现机制:配合flash()和模板中的get_flashed_messages()实现消息反馈

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 877

吉林大学数据库期末考试试卷讲解

给出几套期末真题及解析,给出复习建议。

一杯水果茶!足矣~ 3142

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

构建高可用的flask_mvc框架

构建高可用的flask_mvc框架 这里构建的flask_mvc框架是最基础的版本,用于后续开发的一个mvc模板 flask_mvc的框架图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DqczWn0P-1607261415885)(en-resource://database/556:1)] 对Flaks进行一个封装,达到即用即创建 from flask import Flask class Application( Flask ): def __init__

Archerrrrr的博客 940

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Flask详解

Flask是一种轻量级基于python语言web端的开发框架,有丰富的资源库,接触底层python高阶语法,可以建立小型网站和大型项目。WSGI采用了werkzueg封装,即服务器网关的接口。模板引擎使用jinja2,即前端和python变量结合,实现动态网页。1,路由,又称url资源路径。在开发中称为路由,测试中是资源路径。其实是服务器的地址后续接口,如,"/",指的是默认服务器ip地址。/login(进入login接口页面)二,Flask框架的基础语法实现。一,Flask是什么?

feture12的博客 171

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

学习记录【Flask】

注册后,Flask 才知道这些 URL 应该怎么处理请求。蓝图 = “路由的集合包”,可以理解为一个子模块。导入了 dashboard 模块里定义的蓝图。创建了一个 Flask 应用实例。把蓝图里的所有路由“接入总大脑”类似于“你的网页程序的总大脑”

weixin_72234998的博客 154

大模型的云端部署:flask部署模型简单案例

本文从网络原理出发,结合ResNet18模型实战,完整讲解了Flask模型部署的核心逻辑:网络基础是部署的前提,Flask框架是服务搭建的核心,服务端与客户端的配合是实现功能的关键。掌握本文内容,可轻松实现任意PyTorch模型的Flask部署,避开常见连接、预测问题。怎么进行公网访问服务端呢?

sunxuehai1的博客 616

flask redirect 跳转 失败_Vue + Flask 实战开发系列(七)

vue-admin-template这套脚手架程序,是整合了Vue全家桶相关技术。对于Vue零基础的读者,如果在此基础上来做开发,可能会有一定的难度。因此,你至少需要了解学习一下axios,vuex,vue-router等相关的内容。上一次分享的内容,我们可以看到应用的登录页面了。但还不能登录,这一次就来开发登录功能。登录接口早已经开发完成了。现在你可以打开vue-admin-templ...

weixin_42511712的博客 955

GLM-4.7-Flash代码实例:封装Flask服务提供统一API网关对接多前端应用

本文介绍了如何在星图GPU平台上自动化部署GLM-4.7-Flash镜像,并封装Flask服务构建统一API网关。该网关可为多个前端应用(如Web聊天界面、移动APP等)提供标准化的AI对话接口,实现高效的多端协同与集中管理。

weixin_30600615的博客 284

爬虫数据API化:Flask快速搭建接口

本文介绍了如何利用Flask框架将爬虫数据封装为标准化API接口的方法。通过搭建Flask服务环境,集成爬虫逻辑,开发带参数的查询接口,实现数据采集到服务的转换。文章详细说明了基础接口搭建、参数化接口开发、异常处理等关键步骤,并提供了优化建议。这种轻量级方案能有效提升爬虫数据的复用性,适合个人项目和小型数据平台,便于对接各类业务系统,实现数据价值转化。

weixin_41943766的博客 1086

Qwen1.5-0.5B-Chat支持RESTful API?接口封装教程

本文介绍了如何在星图GPU平台上自动化部署🧠 Qwen1.5-0.5B-Chat 轻量级智能对话服务镜像,快速构建符合OpenAI标准的RESTful API。该镜像适用于网页/小程序集成、本地AI助手开发等典型场景,支持同步响应与流式对话,显著提升轻量级智能交互服务的工程化落地效率。

weixin_34438187的博客 348

Python服务与客户端通信实战:HTTP API设计与错误处理

HTTP API是现代Python系统间通信的基础范式,其核心在于遵循请求-响应模型、实现健壮的错误处理机制,并保障客户端与服务端之间的契约一致性。一个可投入生产的Python服务,不仅需支持RESTful接口设计和标准HTTP状态码语义,更需在超时控制、连接复用、JSON序列化容错、业务异常映射等细节上做显式处理。本文聚焦于最小可行服务(MVS)构建,以Flask为服务端、requests为客户端,深入解析Python服务、客户端通信两大关键热词所涉及的工程实践要点,覆盖健康检查、版本化路由、全局异常处理

weixin_33841722的博客 305

flask基础学习

Flask中有个配置属性叫做SECRET_KEYregex名字固定"""第一步:自定义URL匹配正则表达式""""""路由匹配时,正则匹配成功后传递给视图函数中参数的值:return:""""""使用url_for反向生成URL时,传递的参数经过该方法处理,返回的值用于生成URL中的参数:return:"""return val# 第二步:添加到flask中# 第三步:zaiapp.run()Mobile转换器# 等价于# 定义转换器# 将自定义转换器告知Flask应用。

happy_king_zi的博客 1571

Flask 路由详解:构建灵活的 URL 映射系统

本文全面介绍了Flask框架的路由系统,从基础概念到高级技巧。主要内容包括:1. 基础路由定义与视图函数;2. 动态路由处理与参数类型转换;3. HTTP方法路由与RESTful API设计规范;4. URL构建与反向解析;5. 蓝图(Blueprint)模块化组织大型应用;6. 错误处理与路由匹配规则;7. 高级技巧如正则路由和条件路由。文章还提供了路由设计最佳实践和常见问题解决方案,帮助开发者构建清晰、灵活且易于维护的Web应用URL结构。

这里是 「Py玩家的栈与星辰」,专注分享Python开发、DevOps实践、云原生技术与系统安全领域的深度干货。 1550
上一篇: Flask字符串变量拼接
下一篇: flask 模拟简单的登录功能(1)
敲代码的猫
博客等级 码龄10年 70粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值