Вопрос по python-sphinx, python – Как вывести значение конфигурации в файл Sphinx .rst?

16

Я получил следующее вconf.py:

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

Как я могу получить это в мои файлы .rst? Я написал это:

<code>:base_url:/my_app/api/application/
</code>

Но это только печатает:base_url: вместо фактического URL.

Как получить фактическое значение конфигурации для отправки?

возможный дубликатSubstitutions inside links in reST / Sphinx ideasman42
Итак, на данный момент мы сделали что-то очень грязное. У нас есть скрипт, который просто выполняет поиск -exec sed над сгенерированными документами, изменяя соответствующие URL-адреса. Так что работает, но ... Matt Culbreth

Ваш Ответ

2   ответа
19

Для подмены ссылокextlinks хорошо, для включения произвольных значений конфигурации, которые задаются в вашем вопросе, вы можете использоватьrst_epilog для замены (илиrst_prolog для текста, который должен быть добавлен поверх ваших .rst файлов):

В вашем conf.py:

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

В вашем .rst источнике:

My config value is |my_conf_val|!

В вашем выводе:

My config value is 42!

Я буду продолжать его взламывать. Спасибо за ответ. Он более общий, чем у меня, так что вы получите голос. Matt Culbreth
Не стесняйтесь редактировать ответ
%s вероятно, будет лучшим примером, поскольку он носит более общий характер и соответствует заданному вопросу.
Хорошо, спасибо, у этого есть возможности. Одна проблема, которую я заметил с extlinks, заключается в том, что я не могу использовать ее в середине блока кода. Затем он просто выводит & quot;: api_url: & quot; вместо замены. Было быrst_epilog справиться с этим лучше? Matt Culbreth
Я только что попробовал, но он не работает в блоках кода. Может быть, это ошибка в Docutils, так как sphinx полагается на подстановку документов в этом документе (и я думаю, что ссылки на).
3

Ах, ха!

Посмотрите наsphinx.ext.extlinks модуль вhttp://sphinx.pocoo.org/ext/extlinks.html

Итак, у меня есть код в моем conf.py, который делает это:

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

И в моем файле .rst у меня есть это:

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

который производит красиво отформатированную ссылку как таковую:

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

Похожие вопросы