Как вставить шаблон в другой шаблон?
У меня есть очень простой шаблон (basic_template.html) и хочу заполнить данные, отформатированные с использованием другого частичного шаблона. Файл basic_template.html может содержать несколько элементов, отформатированных с использованием частичного шаблона.
Как я должен структурировать код в views.py?
Причина, по которой я делаю это, - это то, что позже будет заполнено с помощью Ajax. Правильно ли я делаю это?
Ответы
Ответ 1
Вы можете сделать:
<div class="basic">
{% include "main/includes/subtemplate.html" %}
</div>
где subtemplate.html
- еще один шаблон Django. В этом subtemplate.html
вы можете поместить HTML-код, который будет получен с помощью Ajax.
Вы также можете включить шаблон несколько раз:
<div class="basic">
{% for item in items %}
{% include "main/includes/subtemplate.html" %}
{% endfor %}
</div>
Ответ 2
Вы можете сделать это, используя блок .. Блоки - это тег шаблона Django, который переопределит разделы шаблона, который вы расширяете. Я включил пример ниже.
basic_template.html
<body>
{% block 'body' %}
{% endblock %}
</body>
шаблон, который вы хотите включить: (например, example.html)
{% extends 'basic_template.html' %}
{% block 'body' %}
/* HTML goes here */
{% endblock %}
views.py
return render_to_response(template='example.html', context, context_instance)
Выполнение этого будет загружено basic_template.html, но заменит все внутри {% block 'body' %} {% endblock %}
на basic_template.html на все, что содержится в {% block 'body' %} {% endblock %}
.
Вы можете больше узнать о блоках и наследовании шаблонов в Django Docs
Ответ 3
Я просто хотел добавить различия в расширении и включении. Оба шаблона и включить могут использовать модели, вставленные в текущее приложение. Шаблон предназначен для глобального использования любым вашим приложением. Включить для использования в определенных приложениях. Например: вы хотите вставить Image Slider на свою домашнюю страницу и о странице, но больше нигде. Для удобства вы можете создать приложение Slider со своей собственной моделью, импортировать ее модель и включить в нее страницы. Если бы вы использовали шаблон для этого примера, вы бы создали 2 шаблона, один со слайдером, а все остальное есть у другого шаблона.
Ответ 4
Есть в основном 2 способа (2 простых)
1:
В базовый html положить {% include "myapp/sub.html"%}
И просто напишите HTML-код внутри вашего файла sub.html
2:
https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance