文章目录

  • 基本路由定义
  • 路由参数
  • 路由规则
  • 设置请求方法(GET/POST)
  • 路由函数返回
  • 静态文件和模板
  • Blueprint(模块化路由)
  • 显示当前所有路由

Flask 路由是 Web 应用程序中将 URL 映射到 Python 函数的机制。

  1. 定义路由:使用 @app.route(‘/path’) 装饰器定义 URL 和视图函数的映射。
  2. 路由参数:通过动态部分在 URL 中传递参数。
  3. 路由规则:使用类型转换器指定 URL 参数的类型。
  4. 请求方法:指定允许的 HTTP 请求方法。
  5. 路由函数返回:视图函数可以返回不同类型的响应。
  6. 静态文件和模板:管理静态文件和动态渲染 HTML 模板。
  7. 路由优先级:确保路由顺序正确,以避免意外的匹配结果。

基本路由定义

from flask import Flaskapp = Flask(__name__)@app.route('/')
def home():return 'Welcome to the Home Page!'

路由参数

@app.route('/user/<username>')
def user_profile(username):return f'用户:{username}'

访问 http://localhost:5000/user/zhangsan,会返回:

用户:zhangsan

路由规则

类型规则

类型示例
<string:...>(默认)/user/<name>匹配任意字符串
<int:...>/post/<int:id>匹配整数值
<float:...>/rate/<float:x>匹配浮点数值
<path:...>/file/<path:path>(可含 /匹配任意字符,包括斜杠 /。

实例

@app.route('/user/<int:user_id>')
def user_profile(user_id):return f'User ID: {user_id}'@app.route('/files/<path:filename>')
def serve_file(filename):return f'Serving file: {filename}'

设置请求方法(GET/POST)

Flask 路由支持不同的 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。可以通过 methods 参数指定允许的请求方法。
默认只允许 GET,要支持 POST 必须显式声明

@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':return '处理登录'return '显示登录页面'

路由函数返回

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

  • 字符串:返回纯文本响应。
  • HTML:返回 HTML 页面。
  • JSON:返回 JSON 数据。
  • Response 对象:自定义响应。
from flask import jsonify, Response@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 response

jsonify(data):将字典转换为 JSON 响应。
Response(‘Custom response with headers’, status=200):创建自定义响应对象。

静态文件和模板

静态文件(如 CSS、JavaScript、图片)可以通过 static 路由访问。模板文件则通过 templates 文件夹组织,用于渲染 HTML 页面。

静态文件访问:

<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">

使用 url_for() 生成路由链接,url_for("profile") 会生成 /profile。

@app.route('/profile')
def profile():return '这是你的个人资料页'@app.route('/')
def index():return f'<a href="{url_for("profile")}">进入资料页</a>'

模板文件渲染:

from flask import render_template@app.route('/hello/<name>')
def hello(name):return render_template('hello.html', name=name)

模板文件 (templates/hello.html):

<!DOCTYPE html>
<html>
<head><title>Hello</title>
</head>
<body><h1>Hello, {{ name }}!</h1>
</body>
</html>

Blueprint(模块化路由)

from flask import Blueprintbp = Blueprint('admin', __name__, url_prefix='/admin')@bp.route('/dashboard')
def dashboard():return '管理员后台'# 注册 Blueprint
app.register_blueprint(bp)

访问 /admin/dashboard

显示当前所有路由

命令行运行:

flask routes

输出示例:

Endpoint  Methods   Rule
--------  --------  ----------------
hello     GET       /hello
static    GET       /static/<path:filename>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86049.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86049.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86049.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在el-image组件的预览中添加打印功能(自定义功能)

思路&#xff1a;给图片添加点击事件&#xff0c;通过js获取预览的工具栏&#xff0c;在工具栏中添加自定义按钮及事件 1、html 中 image标签 <el-image style"width: 139px; height: 89px" :src"fileUrl" :preview-src-list"[fileUrl]" cli…

TongWeb替换tomcat

1、背景 国家近年来大力推进信息技术应用创新产业&#xff08;信创&#xff09;&#xff0c;要求关键领域采用自主可控的国产软硬件。Tomcat作为国外开源产品&#xff0c;存在潜在的安全风险和技术依赖。TongWeb作为国产中间件&#xff0c;符合信创目录要求&#xff0c;满足政府…

联合语音和文本机器翻译,支持多达100种语言(nature子刊论文研读)

简介&#xff1a; &#x1f30d; SEAMLESSM4T 是一种单一模型&#xff0c;实现了跨越多达 101 种源语言和多种目标语言的语音到语音、语音到文本、文本到语音和文本到文本翻译及自动语音识别。&#x1f680; 该模型性能显著超越现有级联系统&#xff0c;特别是在语音到文本和语…

网站公安网安备案查询API集成指南

网站公安网安备案查询API集成指南 引言 随着互联网应用的日益普及&#xff0c;网络安全和个人隐私保护越来越受到重视。公安网安备案作为保障网络安全的重要措施之一&#xff0c;对于确保网站合法合规运营具有重要意义。为了帮助开发者更加便捷地获取网站的公安网安备案信息&a…

如何用远程调试工具排查 WebView 与原生通信问题(iOS或Android)

WebView 在移动端开发中的角色越来越关键&#xff0c;尤其在混合架构&#xff08;Hybrid&#xff09;项目中&#xff0c;它作为前端与原生的桥梁&#xff0c;承载了大量交互行为。但这个桥梁并不总是稳固&#xff0c;尤其是在涉及 JSBridge 通信 时&#xff0c;前端调用原生接口…

使用 spark-submit 运行依赖第三方库的 Python 文件

python文件在spark集群运行真的麻烦&#xff0c;烦冗 spark运行分为了三个模式&#xff0c;本地模式/client模式/cluster模式 文章目录 本地模式client模式cluster模式参考 本地模式 现在的spark支持python3了&#xff0c;支持python2的版本已经很落后了&#xff0c;所以需要…

【android bluetooth 协议分析 05】【蓝牙连接详解2】【acl_interface_t介绍】

1. acl_interface_t 介绍 acl_interface_t 结构体及其子结构体&#xff0c;目的是封装处理 Classic、LE、SCO 连接及链路事件的回调函数&#xff0c;用于 HCI 事件与上层蓝牙协议栈的解耦分发。 system/main/shim/acl_legacy_interface.h typedef struct {void (*on_connect…

TouchDIVER Pro触觉手套:虚拟现实中的多模态交互新选择

随着虚拟现实技术的发展&#xff0c;用户对沉浸式体验的需求不断提升。TouchDIVER Pro触觉手套通过力反馈、纹理渲染和温度提示三种核心机制&#xff0c;为用户提供更真实的触觉感知体验。六个驱动点分布于五指与手掌&#xff0c;结合全手追踪与低延迟连接&#xff0c;实现精准…

想考华为HCIA-AI,应该怎么入门?

华为HCIA-AI Solution认证作为华为人工智能认证体系的起点&#xff0c;吸引了许多希望进入AI领域或提升专业技能的学习者。如果你正考虑考取这个认证&#xff0c;这份纯科普向的入门指南希望能够帮你理清学习路径和关键准备点&#xff01; 第一、明确认证目标与要求 HCIA-AI S…

【Oracle篇】Windows平台单进程多线程架构设计与实现(比对Linux多进程架构)

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页__奈斯DB &#x1f50e; IF Club社区主页__奈斯、 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、N…

在微服务中使用 Sentinel

在微服务中集成 Sentinel 1. 添加依赖 对于 Spring Cloud 项目&#xff0c;首先需要添加 Sentinel 的依赖&#xff1a; <!-- Spring Cloud Alibaba Sentinel --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

中断控制与实现

一、中断基本概念 1、中断 中断是一种异步事件&#xff0c;用于通知处理器某个事件已经发生&#xff0c;需要处理器立即处理。由于I/O操作的不确定因素以及处理器和I/O设备之间的速度不匹配&#xff0c;I/O设备可以通过某种硬件信号异步唤醒对应的处理器的响应&#xff0c;这些…

前端跨域解决方案(7):Node中间件

1 Node 中间件核心 1.1 为什么开发环境需要 Node 代理&#xff1f; 在前端开发中&#xff0c;我们常遇到&#xff1a;前端运行在localhost:3000&#xff0c;后端 API 在localhost:4000&#xff0c;跨域导致请求失败。而传统解决方案有以下局限性&#xff1a; 修改后端 CORS 配…

iwebsec靶场-文件上传漏洞

01-前端JS过滤绕过 1&#xff0c;查看前端代码对文件上传的限制策略 function checkFile() { var file document.getElementsByName(upfile)[0].value; if (file null || file "") { alert("你还没有选择任何文件&a…

GitHub 趋势日报 (2025年06月23日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 390 suna 387 system-prompts-and-models-of-ai-tools 383 Web-Dev-For-Beginners…

告别水印烦恼,一键解锁高清无痕图片与视频!

在这个数字化飞速发展的时代&#xff0c;无论是设计小白还是创意达人&#xff0c;都可能遇到这样的困扰&#xff1a;心仪的图片或视频因水印而大打折扣&#xff0c;创意灵感因水印而受限。别急&#xff0c;今天就为大家带来几款神器&#xff0c;让你轻松告别水印烦恼&#xff0…

LangChain4j在Java企业应用中的实战指南:构建RAG系统与智能应用-2

LangChain4j在Java企业应用中的实战指南&#xff1a;构建RAG系统与智能应用-2 开篇&#xff1a;LangChain4j框架及其在Java生态中的定位 随着人工智能技术的快速发展&#xff0c;尤其是大语言模型&#xff08;Large Language Models, LLMs&#xff09;的广泛应用&#xff0c;…

Cola StateMachine 的无状态(Stateless)特性详解

Cola StateMachine 的无状态&#xff08;Stateless&#xff09;特性详解 在现代分布式系统中&#xff0c;无状态设计是构建高可用、可扩展服务的关键原则之一。Cola StateMachine 作为一款轻量级的状态机框架&#xff0c;通过其独特的设计理念实现了良好的无状态特性。本文将深…

使用事件通知来处理页面回退时传递参数和赋值问题

背景。uniapp开发微信小程序。在当前页面需要选择条件&#xff0c;如选择城市。会打开新的页面。此时选择之后需要关闭页面回到当初的页面。但问题出现了。onLoad等事件是不会加载的。相关链接。uniapp页面通讯说明使用事件通知来处理页面回退时传递参数和赋值问题 页面之间的…

腾讯云COS“私有桶”下,App如何安全获得音频调用流程

流程图 #mermaid-svg-Phy4VCltBRZ90UH8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-icon{fill:#552222;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-text{fill:#552222;stroke:#552222;}#me…