2011-02-04 18 views
11

Ubuntu 10.10 üzerinde Django 1.2.4 kullanıyorum. Admin modülü için index.html şablonunu geçersiz kılmaya çalışıyorum. Şu instructions'u takip ediyorum. Ayrıca bu question'a da baktım, ancak hala zorluk yaşıyorum.Zorluk geçersiz kılma Django Yönetici şablonu

talimatları şablonlar dizininde bir admin dizini oluşturmak için ki:

templates/ 
    admin/ 
     index.html 

Ben index.html tek blok geçersiz kılmak istiyorum. (Gerçekten, tüm yapmak istediğim sona bazı metin ekleyin olan var mı kopya daha kolay bir yolu/tüm bloğu yapıştırıp bunu değiştirmesini.?) (Güncelleme: {{block.super}} yardımcı olabilir gibi görünüyor.) Için

Ben geçersiz kılma ediyorum sinyali, benim index.html üstündeki bu koyun: tabii ki

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

ki (terminalden) yığın taşması sonuçları:

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

doğru nedir Bunu yapmanın yolu? Ben bağlantılı soru üzerine bir cevap başına bir sembolik çalıştı, ama bu şu sonuçlandı: Yanlış

[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 

yapıyorum? Eğer cevabını buldu, ancak değiştirme gerekiyorsa

cevap

1

emin değil

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

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

üzere bu orijinal index.html sayfası üzerine yazar ne kadar. Django sistemi, varsayılan yönetici olanı kullanmadan önce şablonlar klasörünüzü aradığından, bu durumda, şablonlarınızda admin/index.html dosyasını bulur, ardından kendini genişletme (dolayısıyla yineleme hatası) ile genişletmeye çalışır.

Referans için, base_site.html şablonlarını da özelleştirebilirsiniz, base.html genişler.

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

ve kendisiyle admin/index.html uzanan çünkü tekrarlama hatadır bir başlangıç ​​noktası

13

olarak Şablonlarınız klasörüne yapıştırın: Yapılacak en iyi şey den orijinali kopyalamak olacak.

yapabilirsiniz ya:

  • sizin templates/admin/ dizinde tüm admin/index.html şablonu kopyalamak ve here
açıklandığı gibi
  • geçersiz kılma uygulaması veya modele başına index.html, sizinkiyle varsayılan şablon yerini alacak

    Bu sorunun geç olduğunu biliyorum, ama biliyorsunuz, google seyahat ...

  • 7

    Ayarları değiştirin.örneğin ekstra şablon klasörle py:

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

    Varyasyonlar açıkçası, mümkündür:

    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 
    ) 
    

    Sonra myproject/şablonlar/admin gibi kendi index.html ekleyin. Bu

    +0

    Temiz çözüm django-smart-extends adlandırılan –

    +0

    jdango kurulumuna bir yol yazmayı nasıl kod yazmadan belirtiyorsunuz? – maazza

    +1

    @maazza: 'import django; os.path.dirname (django .__ dosya __) ' – utapyngo

    1

    Fazladan paketi kullanmak

    son Django 1.3.1 üzerinde çalışıyor!