Как загрузить фрагменты HTML в представлении django

Я работаю над проектом django (мой первый), и в одном из моих представлений у меня есть сложный фрагмент html с JS, сотканным внутри него. Я хотел бы повторно использовать этот "компонент" где-то еще в том же представлении. Есть ли способ достичь этого? Пожалуйста, дайте мне знать, если этот дизайн неисправен для начала?

Ответ 1

Используйте {% include '/my/common/template.html'%} templatetag.

Загружает шаблон и отображает его с помощью текущий контекст. Это способ "включая" ​​другие шаблоны в пределах шаблон.

Имя шаблона может быть переменная или жестко закодированная (котируемая) строка в одном или двух котировки.

Ответ 2

Я знаю, что это старый, но, возможно, кто-то будет использовать этот ответ.

Там также тег включения. Это похоже на тег include, только вы можете передавать его аргументы и обрабатывать его как отдельный шаблон.

Поместите это в my_app/templatetags/my_templatetags.py:

@register.inclusion_tag('my_snippet.html')
def my_snippet(url, title):
    return {'url': url, 'title': title}

а затем my_snippet.html может быть:

<a href="{{ url }}">{{ title }}</a>

то, чтобы использовать этот фрагмент в ваших шаблонах:

{% load my_templatetags %}
{% my_snippet "/homepage/" "Homepage" %}

Дополнительная информация: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags-inclusion-tags

Ответ 3

Не уверен, если вы хотите повторно использовать свой HTML-код в разных шаблонах (отображаемых разными представлениями). Если да, рассмотрите механизм механизм наследования шаблона Django:

Самая мощная - и, следовательно, самая сложная - часть механизма шаблонов Django - наследование шаблона. Наследование шаблонов позволяет вам создать базовый "скелетный" шаблон, который содержит все общие элементы вашего сайта и определяет блоки, которые могут изменять дочерние шаблоны.

Ответ 4

Вам следует попробовать настраиваемые теги шаблонов Django. Таким образом, вы сохраните свои фрагменты во внешнем файле, а затем легко вызовите их с помощью {{ your_custom_tag }}. Это очень удобный способ работы с многократными фрагментами разметки xhtml. Вы даже можете использовать аргументы с этими настраиваемыми тегами, что-то вроде {{ your_custom_tag|image:"logo.png" }}. Подробнее о пользовательских тегах вы можете узнать здесь.