【问题标题】:Including images in a Genshi/Trac template在 Genshi/Trac 模板中包含图像
【发布时间】:2015-11-11 10:13:40
【问题描述】:

我正在尝试在我的 Trac 插件的 Genshi 模板中包含一些图像,但它总是只显示替代文本,因为它找不到图像。

我有以下 (X)HTML 代码:

<div>
  <img src="file://c:/path/to/image.png" alt="asdf" />
</div>

当我将这段代码与一个简单的html文件一起使用并在浏览器中打开时,图像显示正确,这意味着路径和语法都正确。

但是当我将代码 sn-p 插入 Genshi 模板并在 Trac 中使用时,找不到图像。但是,当我在 Web 浏览器中查看 HTML 源代码并将 URL 复制到新的浏览器选项卡中时,它再次正确显示。这意味着只有服务器找不到图像。

图片在python-egg文件里面的一个目录下,路径直接指向Trac创建的目录,里面还包含我的CSS和HTML文件,这两个文件都加载正确了。在创建 egg 的设置脚本中正确引用了图像。

在服务器上使用 (X)HTML 文档中的图像时,如何引用它们?
有没有一种特殊的方法可以在 Genshi 文档中包含图像? (我还没有找到。)

【问题讨论】:

  • 在 Trac 中你应该使用 chrome 相对路径。要从您的环境htdocs 目录提供图像,请使用/chrome/site/image.png,或参阅使用available template variables。对于插件,您应该实现ITemplateProvider
  • 你的意思是,对于一个插件,我应该实现 ITemplateProvider “而不是”使用 chrome 类,还是“另外”?我已经让我的组件实现了 ITemplate 提供程序,并且它返回的路径是正确的。然后我应该自己调用 get_htdocs_dirs(),还是有一种方法可以通过让 Trac 调用 get_htdocs_dirs() 方法来访问 htdocs?
  • 我误解了你,我以为你的意思是 chrome 类。现在使用正确的路径它可以工作。我将在下面写一个答案来解释我所做的事情。

标签: html image xhtml trac genshi


【解决方案1】:

感谢 RjOllos 和 this site 的评论,我能够通过尝试所有 URL 类型来修复它。虽然它说插件是/chrome/&lt;pluginname&gt;,但实际上只有/chrome 有效。 请参阅下面的编辑!所以完整的 URL 是 &lt;ip&gt;:&lt;port&gt;/chrome/path/to/image.png

编辑:我发现我实际上使用了/chrome/pluginname 版本,只是我没有使用我的插件名称作为“pluginname”。请参阅下面的评论。看起来/chrome/pluginname 实际上应该是/chrome/htdocsname 或类似的东西,以防您在实现 ITemplateProvider 时使用不同的名称而不是插件名称。在我的例子中,我称之为images,它与文件夹同名。 编辑结束

我犯的另一个错误是忘记了初始斜杠 (chrome/path/to/image.png),这导致 Trac 将 URL 组装成 &lt;ip&gt;:&lt;port&gt;/&lt;current page&gt;/chrome/path/to/image.png

【讨论】:

  • /chrome/&lt;pluginname&gt; 是必需的,因为&lt;pluginname&gt; 通常作为ITemplateProvider.get_htdocs_dirs 实现返回的元组的第一个条目返回。您是否在插件中实现了ITemplateProvider
  • 是的,我有。并且在 URL 中使用插件名称会导致错误,指出找不到文件。
  • 我必须查看您的代码才能确定问题所在。 NoteBoxMacro 是一个简单的例子,见macro.pysetup.py
  • 我发现了问题。我没有将插件名称作为 get_htdoc_dirs() 方法中的第一个元组项,而是使用“images”,因为我认为为图像返回“images”和为 css 文件返回“css”很方便。然后,在模板中,我在路径中添加了“图像”,因为我认为我必须提供相对于 htdocs 文件夹的路径。所以我在这两种情况下都使用了字符串“images”只是一个巧合。因此,我实际上使用了 /chrome/pluginname 而不是 /chrome,只是那个 pluginname 不是我的插件的名称。
猜你喜欢
  • 1970-01-01
  • 2011-08-18
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 2022-10-24
相关资源
最近更新 更多