使用适当的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_urlconf
和Unknown interpreted text role "setting"
等错误让我问候。
答案 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但是重定向几次最终导致文件未找到错误。