Подтвердить что ты не робот

Объединение нескольких шаблонов Django в одном запросе

Мне интересно, может ли кто-нибудь помочь мне разобраться в лучшем подходе к следующей проблеме. Я создаю веб-приложение, которое использует шаблоны Django для создания своего компонента веб-интерфейса. Существует ряд общих HTML-элементов, таких как верхний/нижний колонтитул, HTML-заголовок, мачта и т.д. Я бы хотел их закодировать один раз и "включить/объединить" их с другими шаблонами, представляющими основные функциональные возможности приложения.

Возможно ли использование шаблонов Django? Если да, то как я могу это сделать?

4b9b3361

Ответ 1

Вы можете использовать тег django extends. Скажем, у вас был верхний и нижний колонтитул. Вы можете создать шаблон, называемый, скажем, foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

Затем вы можете создать другой шаблон, скажем, bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

..., который затем отобразит:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

Есть хорошие инструкции по шаблонам django в http://www.djangobook.com/en/1.0/chapter04/.

Ответ 2

Методы {% extends %} и {% include %} хороши для элементов страницы, которые не нуждаются в дополнительной информации в контексте.

Как только вам нужно вставить в базу данных больше материала из базы данных, теги шаблонов пригодится. В качестве примера приложение contrib.comments, включенное в Django, определяет тег шаблона {% get_comment_list %} для получения комментариев, прикрепленных к данному экземпляру модели. Вот как вы его используете:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

Вы можете сохранить это в отдельном шаблоне и {% include %} в других шаблонах.

Для собственного контента вы можете написать свои собственные теги шаблонов. Следуйте документации. Когда это возможно, удобно писать теги с помощью механизма простого тега. Вы найдете удобные готовые теги шаблонов на djangosnippets.org и блогосфера.