You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jinja2中优雅检查路径是否为绝对路径?(pydata-sphinx-theme场景)

改进pydata-sphinx-theme中路径绝对/相对的判断逻辑

当前代码仅通过startswith("http")判断远程URL,无法识别本地绝对路径(如/static/logo.png)或其他协议的绝对路径(如ftp://、file://),可以通过扩展判断条件来覆盖更多场景:

优化后的代码示例

{% set is_absolute = image_light.startswith(('http://', 'https://', 'ftp://', 'file://')) or image_light.startswith('/') %}
{% set image_light = image_light if is_absolute else pathto('_static/' + image_light, 1) %}

逻辑说明

  • 首先判断路径是否属于远程绝对路径:匹配http://、https://、ftp://、file://开头的协议URL
  • 再判断是否属于本地绝对路径:匹配以/开头的路径(适用于Unix/Linux/类Unix环境)
  • 若都不满足,则按相对路径处理,通过pathto拼接_static目录

如果需要兼容Windows系统的本地绝对路径(如C:\static\logo.png),可以补充判断规则:

{% set is_windows_absolute = image_light|length > 2 and image_light[1] == ':' and image_light[2] in ('\\', '/') %}
{% set is_absolute = image_light.startswith(('http://', 'https://', 'ftp://', 'file://')) or image_light.startswith('/') or is_windows_absolute %}
{% set image_light = image_light if is_absolute else pathto('_static/' + image_light, 1) %}

这种写法既保持了代码的可读性,又覆盖了绝大多数绝对路径的场景,比单一的http判断更严谨。

内容的提问来源于stack exchange,提问作者Pierrick Rambaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:45:27