Как я могу использовать фрагменты HTML в представлении Django - PullRequest
12 голосов
/ 19 сентября 2010

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

Ответы [ 4 ]

18 голосов
/ 19 сентября 2010

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

Загружает шаблон и отображает его текущий контекст. Это способ «включая» другие шаблоны в шаблон.

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

7 голосов
/ 27 марта 2013

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

Есть также тег включения .Это похоже на тег 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

2 голосов
/ 19 сентября 2010

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

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

1 голос
/ 19 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...