Я работаю над проектом django (мой первый), и в одном из моих представлений у меня есть сложный фрагмент html с JS, сотканным внутри него. Я хотел бы повторно использовать этот "компонент" где-то еще в том же представлении. Есть ли способ достичь этого? Пожалуйста, дайте мне знать, если этот дизайн неисправен для начала?
Как загрузить фрагменты HTML в представлении django
Ответ 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" }}
.
Подробнее о пользовательских тегах вы можете узнать здесь.