Variables 在Sphinx模板中获取变量
我不知道如何通过模板将变量导入Sphinx文档。我肯定犯了一个基本的错误,但尽管有很多文档介绍如何使用Jinja/Flask模板进行web服务,还有一些文档介绍如何使用Jinja/Flask模板,但我在执行以下操作时遇到了困难。也许这是不可能的,我找错了方向,但这与web模板中变量的工作方式(相对于文档模板)有很大不同 我在一个更大的项目中工作。假设我在项目的Variables 在Sphinx模板中获取变量,variables,templates,jinja2,python-sphinx,Variables,Templates,Jinja2,Python Sphinx,我不知道如何通过模板将变量导入Sphinx文档。我肯定犯了一个基本的错误,但尽管有很多文档介绍如何使用Jinja/Flask模板进行web服务,还有一些文档介绍如何使用Jinja/Flask模板,但我在执行以下操作时遇到了困难。也许这是不可能的,我找错了方向,但这与web模板中变量的工作方式(相对于文档模板)有很大不同 我在一个更大的项目中工作。假设我在项目的conf.py中创建了一个变量,比如 LANGS = ['en', 'de', 'cn'] 我知道这是可行的,因为如果我用conf.py
conf.py
中创建了一个变量,比如
LANGS = ['en', 'de', 'cn']
我知道这是可行的,因为如果我用conf.py
print len(LANGS)
它在docbuild期间显示
但是现在我当然想在我的模板中访问这个变量。据我所知,我们用模板/index.html
覆盖index.rst
,它继承了Sphinx的basic layout.html。如果我这样做了
<p>We have {{ LANGS|len }} languages</p>
我们有{{LANGS | len}}种语言
我明白了
我们有0种语言
现在,这很奇怪,因为有时我会引用未定义的变量(尽管不一致),从而在构建中导致错误,因此它“知道”变量已定义,但认为它的长度为零。还是“null”变量的长度自动为零
如何定义此变量?还是不可能?
我想做的是为列表中的每种语言做一些事情(特别是做一个外部链接),但是我认为如果我不能让它工作,那么尝试{%for%}/{%endfor%}
或者其他任何方法都没有意义。也许斯芬克斯只实现了Jinja的一个子集
无论如何,请帮忙 向模板传递变量至少有两种方法:
<p>We have {{ theme_num_langs }} languages</p>
# conf.py:
html_context = {'num_langs': len(LANGS)}
<!-- template: -->
<p>We have {{ num_langs }} languages</p>
然后,您可以通过html\u主题选项在conf.py
中设置num\u langs
:
html_theme_options = {'num_langs': len(LANGS)}
并在模板中使用它:
<p>We have {{ theme_num_langs }} languages</p>
我们有{{theme_num_langs}}种语言
可能相关:哇,necro回答!谢谢我不得不承认,我几乎忘记了最初的背景,已经离开了那个特定的项目。我会等到你的赏金到期后再接受你的赏金,不过,万一真的有不同的方法来做,因为不必创建“主题”会很好,因为我对“主题”的了解甚至比一般的斯芬克斯还要少。@kcrisman是的,我宁愿不自己创建主题,因此,bounty.找到了通过html_context.Perfect传递变量的更好方法!我很确定这是“规范”的方式,所以我会接受,即使我现在不能测试它。非常感谢。你如何发现斯芬克斯的变数?例如,在“localtoc.html”中,我可以直接编写
{{toc}}
,这很好。但是,这个toc
变量来自哪里?我怎样才能找到其他人?