2013-07-31 11 views
9

Sembra che dovrebbe essere semplice ma devo fare qualcosa di sbagliato. Ho già esteso i modelli di amministrazione per le singole app, ma questa è la prima volta che ho provato a estendere per modificare qualcosa su tutta la linea.Come faccio ad estendere correttamente il modello admin/base.html di django?

Voglio cambiare il colore del testo della guida in tutto l'amministratore, quindi voglio estendere il blocco extrastyle del modello base.html.

Così nella mia cartella dei modelli principale per cui ho creato admin/base.html con questo codice in esso:

{% 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 %} 

Ora, quando provo ed accedo l'amministratore, il server completamente blocca con un 'bus 10' errore. Credo che questo sia perché sta cercando di estendere se stesso. Dal momento che Django guarda prima nelle cartelle dei modelli di app, {% extend 'admin/base.html'%} si trova prima e il mondo esplode.

Tuttavia, se provo a posizionare il codice HTML di base altrove, non funziona. Se lo metto in una delle mie app funziona solo per quell'app, ma se lo metto altrove è semplicemente ignorato.

Dal mio punto di vista è una buona pratica estendere anziché sostituire i modelli di Django, quindi mi piacerebbe farlo funzionare. Tuttavia, se l'unico modo per farlo è sovrascrivendolo, allora questa è la strada che prenderò.

risposta

17

In effetti, il tuo problema è un ciclo di ricorsione infinito come base.html si estende.

per ottenere ciò che si vuole si dovrebbe esclusione admin/base_site.html invece (che a sua volta si estende base.html). In questo modo puoi sostituire solo i blocchi che ti interessano.

+0

Ah, questo è quello che stavo cercando. Grazie! –

Problemi correlati