Для повторного использования шаблона: вам нужно просто создать базовый шаблон для общего макета и использовать подробные шаблоны для отдельных страниц.Это уже подробно описано в документации Django .
Что я обычно делаю с этими общими частями (например, меню с подсветкой текущей части сайта, на которой используется)), для создания моих собственных render_to_response
функций, сродни следующему:
from django.shortcuts import render_to_response as django_render_to_response
def render_to_response(template, params, context_instance):
return django_render_to_response(template,
AppendStandardParams(request, params),
context_instance)
Затем метод ApplyStandardParams
настраивает меню на основе текущего пути:
def AppendStandardParams(request, params):
if request.META['PATH_INFO'].startswith('/customer'):
params['category'] = 'customer'
params['title'] = 'Customer overview'
# and so on for all different parts
Эти теги category
и title
в этом примере представляют собой некоторые значения, используемые для выделения меню, настройки заголовков и т. Д.Например:
<!-- Customer menu entry: change class if this is the current category. -->
<li{% if category == "customer" %} class="selected"{% endif %}>Customers</li>
Наконец, чтобы использовать его в представлении вместо обычного импорта render_to_response
, я просто делаю что-то вроде from lib.views import *
, что делает мою пользовательскую версию доступной в представлении.Таким образом, синтаксис всего кода в представлениях остается неизменным, но мне не нужно настраивать меню каждый раз, когда я создаю новое представление или приложение.