2016-07-14 6 views
0

hallo ich hier flache Seiten in django zu bauen bin versucht würde Ich mag die htmlaußer Kraft setzt Template-Block direkt aus Sicht Django

Basis

<!DOCTYPE html> 
<html lang="en"> 
<head> 
</head> 
<body> 
<div id="main">  
    {% block container %} 
    {% block content %}{% endblock content %} 
    {% endblock container %} 
</div> 
</body> 
</html> 

hier außer Kraft zu setzen Ich mag würde den Block Inhalt außer Kraft zu setzen, so statt erben die Basisvorlage dann überschrieben blockcontent und Nutzungsdaten aus dem Kontext wie

newstatic.html

{% extends "base.html" %} 
{% block content %} 
    {{body}} 
{% endblock %} 

gibt es eine Möglichkeit, den Block direkt aus der Sicht selbst zu überschreiben ??

+1

Sie können einen Vorlagenblock nicht aus Ansichten überschreiben. Wenn Sie einen Block von seinem übergeordneten Element überschreiben möchten, müssen Sie von diesem übergeordneten Element erben und Ihre Daten in diesem Block hinzufügen. Was du tust! Warum willst du so ein Verhalten? – kapilsdv

+0

derzeit vererbe ich base.html in newstatic.html und überschreibe Blockinhalt. Ich hatte gerade diese Abfrage, dass, wenn ich direkt von der Ansicht überschreiben konnte, ich newstatic.html nicht benötige und ich könnte direkt base.html –

+0

Sie können nehmen, wenn um block wie '{% block content%} {% if context%} { {body}} {% elif%} {% endif%} {% endblock%} '. Übergeben Sie einen Kontext mit der Antwort auf base.html aus Ihrer Sicht. Wenn der Kontext vorhanden ist, wird Ihr {{body}} Teil ansonsten als Standard angezeigt. Aber es ist keine gute Übung. Momentan ist nichts falsch in der Art, wie Sie es tun, und es ist modular. – kapilsdv

Antwort

0

Ich bin mir nicht ganz sicher, was Sie tun. Aber wenn Sie {{ body }} in den Inhaltsblock innerhalb von base.html einfügen, können Sie diese Vorlage direkt rendern, ohne newstatic.html zu benötigen.