Найти - Пользователи
Полная версия: Обворачивающий шаблон, есть ли что-нибудь похожее?
Начало » Django » Обворачивающий шаблон, есть ли что-нибудь похожее?
1 2
Evg
Есть ли в джанго такая фича для шаблонной системы:
например в шаблоне участок кода чтобы можно было обернуть в некий тег, а его описание было в отдельном месте с указаниимем метки того что он оборачивает.

т.е например:

сам обворачивающий тег будет таким:
cover:
<div id="cover_div1">
<div id="cover_div2">
{covered}
</div>
</div>
потом где-то в шаблоне:

{cover}
“тут разный хтмл код, вызовы тегов и тд.”
{end_cover}

в результате получается:
<div id="cover_div1">
<div id="cover_div2">
"тут разный хтмл код, вызовы тегов и тд."
</div>
</div>
с помощью инклудов с двух сторон что-то не нравится делать так как шаблон на два файла разбивается не очень красиво..
Александр Кошелев
Похоже на наследование. Но все равно не понятна до конца суть задачи.
Evg
ну как вариант можно реализовать через наследование, но только частные случаи,причем нада плодить каждый раз новый шаблон.

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

это больше с декораторами даже аналогию можно провести чем с наследованием..
Александр Кошелев
Тогда комбинация наследования и include.
Evg
что то не понял как это тут комбинировать и зачем?) если уж взяли инклуд тогда просто им и можно оборачивать с двух сторон и все, зачем тут наследование? хотелось бы конечно более приятного использования типа как декоратора, без извращений..
Александр Кошелев
Evg
хотелось бы конечно более приятного использования типа как декоратора, без извращений..
Не понимаю о каких вы декораторах говорите, если в шаблонах в принципе нет декораторов.

Декоратором можно обернуть кастомный тег. Но тег это в любом случае уже ответставенность не верстки - что неудобно.

Evg
что то не понял как это тут комбинировать и зачем?) если уж взяли инклуд тогда просто им и можно оборачивать с двух сторон и все, зачем тут наследование?
Так красивей получается.

В базовам шаблоне вы как раз пишете:
<cover_div1>
<cover_div2>
{% block covered %}
{% endblock %}
</div>
</div>
потом вы свободно можете от него наследоваться, переопределяя этот блок. Ну и с помощью инклюдов включать этих наследников в основной шаблон где угодно и сколько угодно раз.
Evg
да определенно красивее чем с инклудами и файл не дробится, не нравится только то что нужно много движений с файлами совершать, вот если бы это было в одном фрагменте и читалось бы проще, еще логика заключенная в эти блоки может быть важнее\сложнее чем сами эти обертки и из-за этого перетягивать важную в данном контексте логику в другое место и наследоваться от менее важной информации..тоже как то не хочется - проще наклейку наклеить на стену, чем стену тащить к наклейке :)

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

http://jjinux.blogspot.com/2006/02/python-django-custom-tags.html
Evg
у тега недастаток в данном случае в том что ему нужно предавать то что он обворачивает как параметры, а это не всегда удобно, куда проще разметить границы обворачиваемой области в шаблоне.
shiza
тоже столкнулся с похожей задачей. Никто не придумал более красивое решение?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB