【问题标题】:How do I output a config value in a Sphinx .rst file?如何在 Sphinx .rst 文件中输出配置值?
【发布时间】:2012-04-05 14:05:49
【问题描述】:

我在conf.py 中有以下内容:

def setup(app):
    app.add_config_value('base_url','http://localhost:2000', True)

如何将它放入我的 .rst 文件中?我是这样写的:

:base_url:/my_app/api/application/

但它只打印 :base_url: 而不是实际的 URL。

如何获得要发出的实际配置值?

【问题讨论】:

  • 所以目前我们做了一些非常笨拙的事情。我们有一个脚本,它简单地对生成的文档执行 find -exec sed,更改有问题的 URL。所以它有效,但是......

标签: python python-sphinx


【解决方案1】:

对于链接的替换 extlinks 很好,对于包含您问题中提出的任意配置值,您可以使用 rst_epilog 进行替换(或 rst_prolog 用于文本,应该添加到.rst 文件的顶部):

在你的 conf.py 中:

my_config_value = 42
rst_epilog = '.. |my_conf_val| replace:: %d' % my_config_value

在您的 .rst 源中:

我的配置值为|my_conf_val|!

在你的输出中:

我的配置值为 42!

【讨论】:

  • 好的,谢谢,这有可能。我注意到 extlinks 的一个问题是我不能在代码块的中间使用它。然后它只输出 ":api_url:" 而不是替换。 rst_epilog 会处理得更好吗?
  • 我刚试过,但在代码块中不起作用。也许这是 docutils 中的一个错误,因为 sphinx 在这里依赖于 docutils 替换(我认为 extlinks 到)。
  • 我会继续破解它。感谢您的回答。它比我的更笼统,所以你得到了投票。
  • %s 可能是一个更好的例子,因为它更通用并且适合所提出的问题。
【解决方案2】:

啊哈!

看看sphinx.ext.extlinks 模块。

所以我的 conf.py 中有执行此操作的代码:

extlinks = {'api_url' : (settings.BASE_URL + '%s', settings.BASE_URL)}

在我的 .rst 文件中,我有这个:

:api_url:`/myapp/api/application/`

生成格式良好的链接:

http://localhost:8000/myapp/api/application/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多