2013-07-31 9 views
9

Dies scheint wie es sollte einfach sein, aber ich muss etwas falsch machen. Ich habe zuvor Admin-Vorlagen für einzelne Apps erweitert, aber dies ist das erste Mal, dass ich versucht habe, etwas zu ändern, um etwas zu ändern.Wie erweitere ich die django admin/base.html Vorlage korrekt?

Ich möchte die Farbe des Hilfetexts über den gesamten Admin ändern, also möchte ich den Extrastyle-Block der base.html Vorlage erweitern.

Also in meinem Haupt-Vorlagenordner ich in es mit diesem Code admin/base.html erstellt:

{% extends 'admin/base.html' %} 

{% block extrastyle %} 
    {# Changing the color of the help text across the entire admin #} 
    <style> 
     .help, p.help { 
      font-size: 10px !important; 
      color: #f00; 
     } 
    </style> 
{% endblock %} 

Jetzt, wenn ich versuche, und die Admin-Zugriff, stürzt der Server komplett mit einem 'Bus 10' Error. Ich glaube, das liegt daran, dass es versucht, sich zu erweitern. Da Django zuerst in meinen App-Vorlagen-Ordnern sucht, befindet sich {% extend 'admin/base.html'%} zuerst und die Welt explodiert.

Allerdings, wenn ich versuche, die Basis html woanders zu platzieren, funktioniert es nicht. Wenn ich es in eine meiner Apps platziere, funktioniert es nur für diese App, aber wenn ich es irgendwo anders platziere, wird es einfach ignoriert.

Aus meiner Sicht ist es eine bewährte Methode, die Django-Vorlagen zu erweitern, anstatt sie zu überschreiben, also möchte ich, dass das funktioniert. Wenn ich es jedoch nur durch Übersteuern tun kann, dann werde ich das machen.

Antwort

17

Ihr Problem ist in der Tat eine unendliche Rekursionsschleife, da sich base.html selbst erweitert.

Um das zu erreichen, was Sie wollen, sollten Sie Überschreibung admin/base_site.html statt (die wiederum erstreckt base.html). Auf diese Weise können Sie nur die Blöcke ersetzen, an denen Sie interessiert sind.

+0

Ahh, das habe ich gesucht. Vielen Dank! –