2017-09-06 5 views
0

ich die folgenden Vorlagen eingerichtet habenDjango Teile in geerbten Vorlagen überschreiben

base.html

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

{% block main-content %} 
    <h1>Header stuff<h1> 
    ... 
    {% block article-content %} 
    {% endblock %} 

{% endblock %} 

article.html

{% extends 'base.html' %} 
{% block article-content %} 
    <h2>Content</h2> 
    <p>More content</p> 
{% endblock %} 

Nun angeschlossen ich einen Blick zu der article.html, und ich möchte die dynamischen Ansicht Daten verwenden, um die 'Header-Zeug' in der 'base.htm zu überschreiben l 'Vorlage. Problem ist, dass die View mit der article.html verbunden ist, die von der Basis erbt.

Gibt es eine Möglichkeit, Teile der Basisvorlage von der untergeordneten Vorlage zu überschreiben?

Antwort

1

Sie könnten eine andere template block in Ihrem base.html erstellen

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

{% block main-content %} 
    <h1>{% block header %}Header stuff{% endblock %}<h1> 
    ... 
    {% block article-content %} 
    {% endblock %} 

{% endblock %} 

und überschreiben Sie den Block in Ihrem article.html

{% extends 'base.html' %} 

{% block header %}My overwritten headline{% endblock %} 

{% block article-content %} 
    <h2>Content</h2> 
    <p>More content</p> 
    ... 
{% endblock %} 
1

Sie können auch prüfen, in base.html , wenn ein "Header" -Wert der Vorlage vom Artikel (oder einer anderen Ansicht) aus eingegeben wird:

base.html

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

{% block main-content %} 
    <h1> 
     {% if header %} 
      {{ header }} 
     {% else %} 
      Header stuff 
     {% endif %} 
    <h1> 
    ... 
    {% block article-content %} 
    {% endblock %} 

{% endblock %}