[Python-de] intershinx links

Markus Zapke-Gründemann markuszapke at gmx.net
Mo Mär 19 00:46:32 CET 2012


Hallo Thomas.

Thomas Guettler schrieb:
> ich möchte mit intersphinx Links zu Django's Middleware Doku verlinken.
> 
> In der Django Sphinx Dateien wird das verwendet:
> (see :doc:`/topics/http/middleware`)
> 
> Aber bei mir geht das leider nicht, habe alles mögliche ausprobiert.
> 
> Der Link zum Modul funktioniert:
> 
>  :mod:`Middleware <django.middleware>`:
> 
> Wie kann man zu /topics/http/middleware verweisen?
> 
> Gruß,
>   Thomas
> 
> PS: Ein ganz großes Lob an Georg Brandl für Sphinx!
> 
> # Teil aus conf.py
> extensions = ["sphinx.ext.intersphinx"]
> intersphinx_mapping = {
>     'python': ('http://docs.python.org/2.7', None),
>     'sphinx': ('http://sphinx.pocoo.org/', None),
>     'django': ('http://django.readthedocs.org/en/latest/', None),
> }
Das gesuchte Keyword muss in der Datei objects.inv enthalten sein. Um
herauszubekommen, ob dein Keyword existiert durchsuchst du am besten die Datei
objects.inv. Diese ist mit Hilfe von zlib komprimiert. Mit folgendem Code
kannst du sie aus gegeben:

import sys
import zlib


lines = ''
for line in open(sys.argv[1]):
    if line.startswith('#'):
        continue
    lines += line
print zlib.decompress(lines)

Wenn du den Code nach print_objects.py speicherst wird er so aufgerufen:

$ python print_objects.py _build/html/objects.inv

Das Keyword middleware gibt es nicht. Aber dieser Link würde funktionieren:

:ref:`Django Middleware: process_response <django:response-middleware>`


Vielleicht möchtest du lieber sphinx.ext.extlinks[1] nutzen:

extlinks = {'djangodocs': ('http://docs.djangoproject.com/en/1.3/%s', None)}

Ein Link sieht dann so aus:

:djangodocs:`Middleware <topics/http/middleware/#topics-http-middleware>`


Viele Grüße

Markus

[1] http://sphinx.pocoo.org/ext/extlinks.html


Mehr Informationen über die Mailingliste python-de