Allega al sito nel modello di Django con block.super
Domanda
Ho 3 modelli di Django:
base.html
<title>{% block title %} SITE NAME {% endblock %}</title>
default.html
{% extends "base.html" %}
{% block title %} {{ block.super }} - SECTION NAME {% endblock %}
main.html
{% extends "default.html" %}
{% block title %} {{ block.super }} {% endblock %}
Mi piacerebbe avere nome del sito nella template main.html vale a dire il contenuto del genitore del blocco genitore. Qualcosa di simile
{{ block.super.super }}
È possibile?
Soluzione
Non credo che questo sia possibile. Solo per il vostro problema specifico credo che può essere risolve se si desidera inserire il nome del sito prima del blocco, e utilizzare il blocco solo per aggiungere qualcosa per il nome del sito.
In caso contrario si potrebbe definire SITE_NAME
nel vostro settings.py
e hanno un processore contesto come
from django.conf import settings
def site_name(request):
return {'SITE_NAME': settings.SITE_NAME}
in modo che è possibile utilizzare {{ SITE_NAME }}
nei template - questo potrebbe dare un senso in quanto il nome del sito potrebbe essere usefule in altri posti troppo ...
Altri suggerimenti
Nota, Django 1.2.3 sembra già fare quello che vuoi. SITE_NAME Supponendo che è esposto attraverso un context_preprocessor come lzerscience illustra, block.super dovrebbe esporlo attraverso tutti gli strati di ereditarietà.
main.html
{% extends "default.html" %}
{% block title %} {{ block.super }} - MAIN{% endblock %}
che visualizza il titolo "NOME SITO - SEZIONE NOME - MAIN". Per me
Django 1.6.6
{{ block.super.super }}
- possibile
provo ora - ha lavorato :) Ma non ufficialmente ...