2013-08-14 14 views
5

Ich beginne mit Django, und ich versuche, eine modulare Vorlage zu machen, aber ich weiß nicht wie. Jetzt habe ich die folgenden Dateien:Modulare Vorlagen in Django

1- base.html (die für die ganze Website grundlegende Layout bietet):

{% load staticfiles %} 
<!DOCTYPE html> 
<html> 
<head> 
<title>My site</title> 
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}" /> 
<link rel="stylesheet" type="text/css" href="{% static 'css/bootsrap.min.css' %}" /> 
</head> 

<body> 
<h1>Test title</h1> 
{% block content %} 
{% endblock %} 
</body> 
</html> 

2- index.html (Haupt db read)

{% extends 'base.html' %} 
{% block content %} 
{% if latest_smartphones_list %} 
<ul> 
{% for s in latest_smartphones_list %} 
    <li><a href="#">{{ s.brand }} {{ s.name }}</a></li> 
{% endfor %} 
</ul> 
{% else %} 
<p>No smarphones available.</p> 
{% endif %} 
{% endblock %} 

Schließlich wollte ich eine dritte Datei namens menu.html hinzufügen, die das Site-Menü enthalten würde. Ich wollte es in der Datei base.html hinzufügen. Ich habe darüber nachgedacht, es auf die folgende Weise zu tun, aber ich arbeite nicht:

{% load 'menu.html' %} 

Vielen Dank für Ihre Hilfe!

+0

Die Drei-Ebenen-Vorlage ist ein Beispiel in der [Vorlage Vererbungsreferenzdokumentation] (https://docs.djangoproject.com/en/1.4/topics/templates/#temp Spätvererbung) – msw

Antwort

4

Statt {% load 'menu.html' %} verwenden Sie haben {% include 'menu.html' %}

Docs verwenden:

+0

Danke, es hat geklappt! – Paolo

0

Der richtige Weg ist mit dem include templatetag

{% include 'menu.html' %} 

, die eine Vorlage enthält und macht sie mit dem aktuellen Kontext.

NB: Wann immer Sie in Schwierigkeiten sind, ist django docs der beste Ort zu gehen! Halten Sie diese im Auge