Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2009 10:37:32

StackOverflow
От:
Зарегистрирован: 2009-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Телепортация по темплейту

Можно ли в Django сделать следующее. Предположим есть подtemplate, который будет использован другим template, это обычно называют partial в ROR. И вот я хочу внутри template написать:

{ goto('head') }
<style></style>
<script>// какойнибудь jquery</script>
{ goto('head') }

<div>body</div>
И хочу чтобы это участок ушёл в head, а остальное пошло в body.

Inheritance не подходит, так как таких подтемплейтов должно быть много, а если использовать include, то перенести участки не получиться. Возможно надо писать custom tag, но пока я не понял, умеет ли он использовать такие телепорты.



Отредактировано (Фев. 27, 2009 11:09:19)

Офлайн

#2 Фев. 27, 2009 11:41:52

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Телепортация по темплейту

StackOverflow
Возможно надо писать custom tag, но пока я не понял, умеет ли он использовать такие телепорты.
Если вы его научите, то сумеет.

Тут главное отойти от принципа “а вот в технологии X есть Y”, а решать конкретную задачу в рамках имеющихся средств.



Офлайн

#3 Фев. 27, 2009 12:14:06

StackOverflow
От:
Зарегистрирован: 2009-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Телепортация по темплейту

А может подскажите библиотеки кастомных тегов?

>>Тут главное отойти от принципа “а вот в технологии X есть Y”, а решать конкретную задачу в рамках имеющихся средств.
вот и определяю есть эти средства, чи нет их.

>>Если вы его научите, то сумеет.
Смогу научить его такому? API позволит?

Задача выходит следующая:

1. В любом темплейте (parent или childe), устанавливаеться один тег {{ telepoint “head” }}, с указанием своего имени, таких может быть несколько.
2. Во время его выполнения, каждый из telepoint оставляет своё место как метку, и записывает в список себя
3. Затем блок {{ teleputter “head” “unique-name” }} блок {{ teleputterend }} распихивает по каждому telepoint блоки, при этом просчитывая ключи уникальности блоков



Отредактировано (Фев. 27, 2009 12:15:46)

Офлайн

#4 Фев. 27, 2009 14:44:43

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Телепортация по темплейту

Что-то вы всё равно уже скатились до деталей реализации концепции, которую вы придумали с абсолютно лишним mainline'ом ввиде “телепортации”. Понятно что этого нет.

Скорей всего если вы от неё абстрагируетесь, то либо найдете простое решение в виде кастомного тага или inclusion тега.

Но в любом случае даже в таком виде есть шанс реализовать задуманное.

Плюс поищите всякие django-* проекты на Google Code или гитхабе.



Офлайн

#5 Фев. 27, 2009 16:49:40

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Телепортация по темплейту

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

возможно это даже ввиде декоратора как то можно удобно сделать который подключит к виду все нужные для его работы js файлы..



Отредактировано (Фев. 27, 2009 16:54:45)

Офлайн

#6 Фев. 28, 2009 01:46:15

StackOverflow
От:
Зарегистрирован: 2009-02-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Телепортация по темплейту

to Evg
Ваше решение самое простое. Действительно если js редкий, то его имеет смысл передавать в темплейт, а если частый то нужно грузить сразу одним пакетом все.



Офлайн

#7 Фев. 28, 2009 14:31:16

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Телепортация по темплейту

еще вариант - можно передавать в шабон имя файла который нужно инклудить с js подключениями, в другом виде просто перекрывать файл другим новым файлом, внутри нового файла делать инклуд базового (который перекрыли) и дописывать новые подключения.



Офлайн

#8 Март 3, 2009 13:50:15

asstet
От:
Зарегистрирован: 2009-03-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Телепортация по темплейту

на первой странице документации

{% extends "base_generic.html" %}

{% block title %}{{ section.title }}{% endblock %}

{% block content %}
<h1>{{ section.title }}</h1>

{% for story in story_list %}
<h2>
<a href="{{ story.get_absolute_url }}">
{{ story.headline|upper }}
</a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}
соответственно в базовом шаблоне именованные части этого шаблона подключаются в места, где они объявлены



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version