2011-02-04 10 views
11

मैं उबंटू 10.10 पर Django 1.2.4 का उपयोग कर रहा हूं। मैं व्यवस्थापक मॉड्यूल के लिए index.html टेम्पलेट को ओवरराइड करने की कोशिश कर रहा हूं। मैं इन instructions का पालन कर रहा हूं। मैंने यह question भी देखा, लेकिन मुझे अभी भी कठिनाई हो रही है।Django व्यवस्थापक टेम्पलेट को ओवरराइड करने में कठिनाई

निर्देश टेम्पलेट्स निर्देशिका में एक admin निर्देशिका बनाने के लिए कहते हैं:

templates/ 
    admin/ 
     index.html 

मैं index.html में एक खंड ओवरराइड करना चाहते। (वास्तव में, सभी मैं करना चाहता हूँ/कॉपी से एक आसान तरीका पूरे ब्लॉक चिपका कर और इसे बदलने अंत करने के लिए कुछ पाठ संलग्न रहा है।?) (अद्यतन: {{block.super}} की तरह मदद कर सकते हैं लगता है।)

करने के लिए

संकेत है कि मैं अधिभावी कर रहा हूँ, मैं अपने index.html के शीर्ष पर डाल:

{% extends "admin/index.html" %} 
बेशक

, कि एक ढेर अतिप्रवाह में परिणाम (टर्मिनल से):

Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in <type 'exceptions.RuntimeError'> ignored 

क्या सही है ऐसा करने का तरीका? मैं जुड़ा हुआ सवाल पर एक जवाब प्रति एक सिमलिंक कोशिश की, लेकिन जो निम्न के परिणामस्वरूप:

[email protected]:~/foo$ sudo ln -s /usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/ django_admin 
[sudo] password for me: 
ln: creating symbolic link `django_admin': Protocol error 

क्या मैं गलत कर रहा हूँ?

उत्तर

1

अगर आप इस सवाल का जवाब मिल गया है, लेकिन आप को बदलने की जरूरत सुनिश्चित नहीं हैं कि

{% extends "admin/index.html" %} 

{% extends "admin/base_site.html" %} 

के रूप में है कि क्या मूल index.html पृष्ठ अधिलेखित कर देता है। चूंकि Django सिस्टम डिफ़ॉल्ट व्यवस्थापक का उपयोग करने से पहले आपके टेम्पलेट फ़ोल्डर को खोजता है, इसलिए इस मामले में यह आपके टेम्पलेट्स में व्यवस्थापक/index.html पाता है, फिर यह विस्तार (इसलिए रिकर्सन त्रुटि) के साथ स्वयं को विस्तारित करने का प्रयास कर रहा है।

संदर्भ के लिए आप base_site.html को भी टेम्पलेट्स में कस्टमाइज़ कर सकते हैं, यह base.html फैलाता है।

/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/ 

और यह एक प्रारंभिक बिंदु

13

क्योंकि आप खुद के साथ admin/index.html का विस्तार कर रहे प्रत्यावर्तन त्रुटि है के रूप में अपने टेम्पलेट्स फ़ोल्डर में पेस्ट करें: करने के लिए सबसे अच्छी बात से मूल कॉपी है।

आप या तो:

  • अपने templates/admin/ निर्देशिका में कॉपी पूरे admin/index.html टेम्पलेट, और यह के रूप में समझाया here
  • ओवरराइड एप्लिकेशन या मॉडल प्रति index.html, तुम्हारा साथ डिफ़ॉल्ट टेम्पलेट का स्थान ले लेगा

    मुझे पता है कि यह प्रश्न के बाद देर हो चुकी है, लेकिन आप जानते हैं, Google यात्रा ...

  • 7

    सेटिंग्स में संशोधन करें।एक अतिरिक्त टेम्पलेट फ़ोल्डर के साथ py, उदाहरण के लिए:

    {% extends "contrib/admin/templates/admin/index.html" %} 
    
    {% block branding %} 
        <h1 id="site-name">Administration for TheLittleButtonCo</h1> 
    {% endblock %} 
    

    बदलाव, संभव हो रहे हैं जाहिर है:

    TEMPLATE_DIRS = (
        # Put strings here, like "/home/html/django_templates". 
        # Always use forward slashes, even on Windows. 
        # Don't forget to use absolute paths, not relative paths. 
        "/home/mysite/webapps/django/myproject/templates", 
        "/home/mysite/webapps/django/lib/python2.7/django/", # extra folder 
    ) 
    

    फिर MyProject/टेम्पलेट्स/व्यवस्थापक में की तरह अपने खुद के index.html जोड़ें। यह Django 1.3.1 अंतिम

    +0

    स्वच्छ समाधान कहा जाता है! –

    +0

    बिना किसी हार्डकोडिंग के jdango इंस्टॉल करने के लिए आप पथ कैसे निर्दिष्ट करते हैं? – maazza

    +1

    @maazza: 'आयात django; os.path.dirname (Django .__ फ़ाइल __) ' – utapyngo

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