如何将intersphinx与特定于django的结构(如设置)相关联?

时间:2012-11-14 20:53:57

标签: django python-sphinx

使用适当的intersphinx设置,您可以从您自己的文档链接到Django类,如下所示:

:class:`django:django.db.models.Model`

但是你如何链接到一个设置? Django使用自己的:setting:构造,而不是像:class:这样的内置构建。如何使用intersphinx链接到设置?

我尝试了各种各样的咒语,但都没有工作(有些可能是完全错误的):

:ref:`django:ROOT_URLCONF`
:ref:`django:root_urlconf`
:setting:`django:ROOT_URLCONF`
:ref:`django:setting:ROOT_URLCONF`
:django:setting:`ROOT_URLCONF`

undefined label: django:root_urlconfUnknown interpreted text role "setting"等错误让我问候。

2 个答案:

答案 0 :(得分:9)

问题:我的本地狮身人面像并不知道Django的自定义狮身人面像角色,如setting。所以这是一个非常精细的intersphinx参考:

:django:setting:`ROOT_URLCONF`

在您告诉Sphinx关于intersphinx目标的自定义角色之前不起作用。

最后通过将Django's sphinx extension的一小段代码复制为我的文档旁边的_ext/djangodocs.py来完成工作:

def setup(app):
    app.add_crossref_type(
        directivename = "setting",
        rolename = "setting",
        indextemplate = "pair: %s; setting",
    )

我将以下内容添加到我的Sphinx'conf.py

import os
import sys

...

sys.path.append(
    os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext")))
# ^^^ I'll do that neater later on.

extensions = ['djangodocs',
              # ^^^ I added that one.
              'sphinx.ext.autodoc',
              ...
              ]

...

所以:intersphinx有效,但是如果你指向一个自定义角色,你需要在本地定义该自定义角色。

答案 1 :(得分:2)

你需要查看django的objects.inv,找出正确的交叉引用应该是什么。

看来:

:std:setting:`ROOT_URLCONF <django:ROOT_URLCONF>`

应该有用。

不知怎的,我有django的objects.inv但是找不到我从中检索到的URL,理论上它应该是https://docs.djangoproject.com/en/1.4/objects.inv但是重定向几次最终导致文件未找到错误。