gpt4 book ai didi

python - Plone CMS 日历源中的图像损坏

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:27 25 4
gpt4 key购买 nike

我们定期在主页的日历提要中显示损坏的图像,http://cnr.foo.edu 。问题似乎是我们将提要拉入主页的脚本前置 http://events.foo.edu到所有图像 URL 上,当相关图像托管在远程服务器而不是日历网络服务器上时,这会导致失败。如何调整脚本,以便在图像 URL 已包含 http 的情况下它不会添加根日历 URL?

这是我需要修改的 python 脚本片段:

<div class="campus-calendar-event">
<div class="image-left" style="width: 40px;" tal:condition="python: event['Image']">
<a tal:attributes="href python:'http://events.foo.edu/index.php/calendar/sn/coe.html?event_ID=%s' % event['ID'];
title python: event['Title']">
<img tal:condition="python: event['Image']"
tal:attributes="src python: 'http://events.foo.edu%s' % event['Image']['URL'];
alt python: event['Title'];
width string:40px " /></a>
</div>

如果“URL”已经包含“http”(远程服务器的链接),如何添加“if”语句以省略“http://events.foo.edu”部分?感谢您的帮助!

最佳答案

作为权宜之计,这可能会起作用(未经测试 - 我家里没有安装):

<img tal:define="url python: event['Image'] and event['Image']['URL'];"
tal:condition="python: event['Image']"
tal:attributes="src python: url if url.startswith('http') else 'http://events.foo.edu%s' % (url,);
alt python: event['Title'];
width string:40px " /></a>

(请注意,您的代码无法处理没有条目 URLevent['Image'],我的代码也不会。)

不过,使用 urlsplit/urljoin 可能有一个更优雅的解决方案,它将您的 url 分解为协议(protocol)、服务器、路径、查询、片段和您可以从那里重新组装它。

具体来说,我们定义了一个变量 url 来节省我们的打字时间——我们首先必须再次检查 event['Image'] 是否存在。整个标记受执行此操作的 tal:condition 保护,但执行顺序始终为 defineconditionrepeat 内容/替换属性省略;这样您就可以定义一个变量并在条件子句中使用它。我们可以将其命名为 URL,但我通常不会用全大写来命名变量。 python 中的 x 和 y 如果为假则生成 x 的值,如果为真则生成 y 的值,所以在通常情况下,我们将从您的对象中获取 url-ish 字符串。

新的属性子句可能会令人困惑,因为它的括号不足:更详细地说,它是

url if url.startswith('http') else ('http://events.foo.edu%s' % (url,));

所以这是通常的字符串格式。看看 %s 的结尾,我们可能会说 'http://events.foo.edu'+url,但是“不要连接常量和用户数据在一起”触发了我的“这是否是一个可能的命令注入(inject)漏洞”反射。

关于python - Plone CMS 日历源中的图像损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com