Вопрос по python, django-templates, templates, django, jinja2 – Django: Как использовать сторонние теги-шаблоны приложений с Jinja 2?

9

я стараюсьJinja2 для моего сайта Django.

Теперь, так какJinja2 не является официальнымdjango templating engine и его отказ распознавать / загружать теги шаблонов, которые я использовал доjinja2.

Теперь, даже если должно быть изменение в создании тегов шаблона, то как это можно отразить в сторонних приложениях?

В этом случае кажется невозможным использовать Jinja2, так как система должна работать в соответствии с jinja2.

[Я также используюcoffin как адаптер для Джинджа-Джанго]

Любая помощь приветствуется!

В этом случае, я полагаю, все используют какое-то стороннее приложение для чего-то. Даже если не много, но все же - это делает невозможным использование Jinja2 в практическом сценарии. Имелcoffin охватывает все основные моменты, но это не так. Так как же индустрия использует Jinja2? Yugal Jindle
Структура Django не допускает замены механизма шаблонов; так как это основная часть системы. Даже если вы можете, используяcoffinэто не поддерживаемая конфигурация; и никакой сторонний модуль не может поддерживать его. Если вы хотите использовать jinja2, используйте интегрированный фреймворк, напримерflask или жеpyramid. Burhan Khalid
Сторонние приложения, разработанные для django, будут опираться на движок шаблонов django. Таким образом, вы правы, не стоит ожидать, что сторонние приложения будут совместимы с неподдерживаемыми шаблонизаторами. Burhan Khalid
@YugalJindle: Кто сказал, что индустрия использует Jinja2 с django? Я уверен, что он широко применим за пределами Django. Чего вам не хватает, так это того, что django - это фреймворк. Вы не можете ожидать, что фреймворк будет иметь полностью заменяемые части от официального - & gt; Третья сторона jdi
Я понимаю .. ваши вопросы, так как я был больше в исследовательском режиме. Если это так, то как вы можете использовать Jinja2 с django, поскольку я сталкиваюсь с проблемами производительности движка шаблонов. Yugal Jindle

Ваш Ответ

3   ответа
1

В соответствии сдокументы на гроб вам нужно будет переписать любые пользовательские теги шаблонов django в качестве пользовательских расширений Jinja2.

Вы также можете использовать функцию макросов jinja2 для эмуляции тегов шаблонов Django. Наиболее заметным отличием является то, что для макросов Jinja2 необходимо будет предоставить все данные контекста через контекст шаблона, в то время как в тегах Django вы можете обращаться к данным другими способами (например, загрузка из базы данных или вызов других библиотек Python).

Я уже некоторое время использую шаблоны Jinja2, и у меня никогда не было необходимости создавать собственные теги шаблонов.

Можно использовать шаблоны django в одном приложении на сайте и jinja2 в другом приложении, это не проблема, но невозможно легко импортировать или расширять шаблоны jinja2 из шаблонов django и наоборот.

{% trans%} что-то {% endtrans%} в Jinja2 есть только одна версия тега trans. Это задокументировано, также существует способ сделать множественное число.
Как вы используетеi18 с Jinja2, предоставьте пример кода для{% trans %} а также{% blocktrans %} альтернативы / изменения. Я почти объявилJinja2 как непригодный для использования, поскольку мы используем сторонние приложения, чей код не поддерживается нами. Yugal Jindle
Отлично .. Я буду исследовать большеjinja. Yugal Jindle
0

Структура Django не допускает замены механизма шаблонов, поскольку он является основной частью системы. Даже если вы можете с помощьюcoffinЭто не поддерживаемая конфигурация, и никакой сторонний модуль не может ее поддерживать. Это было бы то же самое, что просить сторонние модули для поддержкиsqlalchemy потому что вы нашли способ заставить Django работать с ним.

Если вы хотите использовать jinja2, используйте фреймворк, который разработан с подключаемым механизмом шаблонов - или тот, который поставляется без шаблонизатора.

страница интеграции списки из коробки интеграции, которые идут с Jinja2. На этой странице вы можете увидеть, чтоPyramid поддерживается - и это потому, чтоby design пирамида учитывает вставные компоненты.

Flask (сделанные теми же людьми заJinja2) имеет встроенную поддержку Jinja2.

Да. (Еще 11 осталось)
Здесь следует упомянуть, что SO - это не дискуссионный форум; если у вас есть конкретная проблема; вам нужно четко перечислить это. Если вы ищете обсуждение для вашего общего удивления или исследования; тогда это не место для этого.,
Итак, вы пришли к выводу, что нет никакого способа использоватьjinja2 с Django, если вы не готовы заставить даже сторонние вещи работать в соответствии сjinja2 вручную? Yugal Jindle
+1 для четкого ответа, я ищу несколько примеров, когда люди использовалиJinja2 с Джанго. Так как об этом много говорилось на мероприятиях в Джангоконе. Yugal Jindle
Я достаточно взрослыйstackoverflow чтобы знать это, не беспокойтесь об этом. Есть 2 решения проблемы:1 Это решение или2 Это не может быть решено, потому что XYZ. Я очень хорошо понимаю stackoverflow! Yugal Jindle
1

Вы можете сделать это с гробом. Coffin предоставляет способ регистрации тегов в стиле django для использования в шаблонах jinja2:

from coffin import template
from ThrdPartyDjangoLib import djangoTagIWantToUse
register = template.Library()

register.tag('djangoTagIWantToUse', djangoTagIWantToUse)
документация в coffin гласит: «Coffin может автоматически сделать ваши существующие фильтры Django пригодными для использования в Jinja,but not your custom tags - вам нужно переписать их как расширения Jinja вручную. & quot; Вы не можете автоматически конвертировать теги шаблонов Django в теги шаблонов Jinja2. Обычно с Jinja2 можно избежать использования тегов шаблонов, так как есть макросы.
Не совсем, я не использую гроб. Но если вы посмотрите на их документы:github.com/coffin/coffin#custom-filters-and-extensions это объясняет, как это сделать.
Тогда почему это дает вам возможность зарегистрироватьсяBOTH типы тегов? register.tag («foo», do_foo) # Django-версия тега register.tag (FooExtension) # Jinja-версия тега
Кажется, мы действительно можем использоватьJinja2 с Джанго практически. Можете ли вы уточнить немного больше? Как и что он на самом деле делает? Yugal Jindle

Похожие вопросы