,您可以撥打site_base.html
所有的<head>
和<script>
等元素,並用
<!-- HEAD -->
{% block content %}
<div class='container' id="default_container">
Your default content
</div>
{% endblock content %}
<!-- FOOT -->
然後在你的urls.py你確定「路徑」 - 網址應用到您的意見。如果您desireing一個簡單的平面頁面,您可以把TemplateView.as_view(template_name = "page_1.html")
喜歡:
urlpatterns = patterns('',
(r'^$', TemplateView.as_view(template_name='site_base.html')),
(r'^page_1/$', TemplateView.as_view(template_name='page_1.html')),
)
,並在您page_1.html
:
{% extends 'site_base.html' %}
{% block content %}
<div class='container' id="page_1">
Your Page 1 content that will overwrite `block content` tag from site_base.html
</div>
{% endblock content %}
你可以把你想要的任何{% block }%
標籤。
我有時使用我的Flat
應用程序。它搜索與URL名稱的模板或返回404
# urls.py
from views import flat_render_view
urlpatterns = patterns('',
url(r'^(?P<template_name>\w+)/$', flat_render_view, name='flat_view'),
)
# views.py
from django.http.response import Http404
from django.template.base import TemplateDoesNotExist
from django.shortcuts import render
def flat_render_view(request, **kwargs):
try:
return render(request, "flat_pages/%s.html" % kwargs['template_name'])
except TemplateDoesNotExist:
raise Http404
我很清楚這一點。我的問題是,製作多個模板(例如擴展基礎)是否更好,其中所有標記都是相同的,只有內容會發生變化。我相信我會違反DRY原則,如果我創建了3個模板全部使用相同的標記並且只更改了內容。 – Justin
好的,如果你可以使模板足夠通用,那麼它很好的重用相同的模板。幾個不同的視圖可以渲染具有不同上下文的相同模板。 – krs
因爲我沒有考慮做不同意見的可能性,所以給你信譽,我以爲我會用一種觀點來區分回報。使用一個模板的多個視圖絕對是答案。謝謝! – Justin