2012-11-14 3 views
6

एक उचित intersphinx सेटअप के साथ, आप इस तरह अपने खुद के दस्तावेज़ से Django वर्गों के लिए लिंक कर सकते हैं: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

एक intersphinx objects.inv से उपलब्ध लिंक लक्ष्यों को निकालने का एक तरीका भी मदद कर सकता है। फ़ाइल के अनुसार, आंशिक रूप से zlib एन्कोडेड और सरल gunzip/unzip काम नहीं किया है। –

उत्तर

9

समस्या: मेरे स्थानीय स्फिंक्स को setting जैसे Django की कस्टम स्फिंक्स भूमिकाओं के बारे में पता नहीं था। तो इस तरह की एक बिल्कुल ठीक intersphinx संदर्भ:

:django:setting:`ROOT_URLCONF` 

जब तक आप intersphinx लक्ष्य के कस्टम भूमिका के बारे में बता दिया है स्फिंक्स काम नहीं करता।

अंत में यह _ext/djangodocs.py के रूप में मेरे प्रलेखन के बगल में Django's sphinx extension से एक छोटा स्निपेट को कॉपी करके काम कर रहा है:

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

और मैं अपने स्फिंक्स '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 काम करता है, लेकिन यदि आप एक कस्टम भूमिका पर इंगित करते हैं, तो आपको उस कस्टम भूमिका को स्थानीय रूप से परिभाषित करने की आवश्यकता है।

+0

ऐसा लगता है कि आप सीधे अपने conf.py में सेटअप (एप) फ़ंक्शन को भी परिभाषित कर सकते हैं और इसके साथ किया जा सकता है। (इसे एक अलग फ़ाइल में रखने के बिना, इसे sys.path पर प्राप्त करें, और इसे स्फिंक्स एक्सटेंशन के रूप में सूचीबद्ध करें।) Http://sphinx-doc.org/config.html#confval-extensions - "कॉन्फ़िगरेशन फ़ाइल स्वयं एक एक्सटेंशन हो सकती है; इसके लिए, आपको केवल इसमें एक सेटअप() फ़ंक्शन प्रदान करने की आवश्यकता है। " – medmunds

2

आपको डीजेंगो के लिए object.inv को देखने के लिए सही क्रॉस संदर्भ होना चाहिए।

ऐसा लगता है कि:

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

काम करना चाहिए।

किसी भी तरह से मेरे पास django के लिए items.inv है लेकिन मैं इसे पुनर्प्राप्त करने वाले यूआरएल को नहीं ढूंढ सकता, सिद्धांत रूप में यह https://docs.djangoproject.com/en/1.4/objects.inv होना चाहिए, लेकिन अंततः कई बार रीडायरेक्ट होता है जिसके परिणामस्वरूप फ़ाइल-त्रुटि नहीं होती है।

+0

मैंने आपके सुझाव की कोशिश की: नहीं, अभी भी एक "अज्ञात व्याख्या की गई पाठ भूमिका 'std: सेटिंग' ', दुख की बात है। आप उस std द्वारा कैसे आया: सेटिंग? –

+1

मैंने django (https://django.readthedocs.org/en/latest/objects.inv) से object.inv को डंप किया। मेरे पास एक शर्मनाक रूप से खराब पायथन लिपि है जो ऑब्जेक्ट.inv (https://gist.github.com/4118456) – epc

+0

पार्स करती है एक और बात: आपको यह सुनिश्चित करने की ज़रूरत है कि लिंक में उपसर्ग (जैसे "django") जो कुछ भी मेल खाता है आपने conf.py में intersphinx_mapping dict में सूचीबद्ध किया है, sphinx यूआरएल को देखने के लिए उपयोग करता है और फिर उस यूआरएल से object.inv को पुनः प्राप्त करता है। – epc

संबंधित मुद्दे