Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 12, 2012 07:53:04

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Читаю документацию, там вижу {% load thumbnail %} и далее такой код:

{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
Это значит все сделается на лету и не нужно больше ни где ничего определять? Вообще не могу понять как это все работает. Не могли бы пояснить?



Офлайн

#2 Фев. 12, 2012 08:32:22

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Ну все как в документации: Пропсать в settings.INSTALLED_APPS
в темплейте сделать {% load thumbnail %}


как работает:
http://thumbnail.sorl.net/operation.html

Если интересно как в темплейте работает: темплейт-тег просто получает картинку с параметрами. Генерирует или берёт из кеша. Возвращает новую картинку. “as im” — простоговорит какое имя для новой переменной взять. Ну а дальше как обычно.



Офлайн

#3 Фев. 12, 2012 10:36:58

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Imposeren
Ну все как в документации: Пропсать в settings.INSTALLED_APPS
в темплейте сделать {% load thumbnail %}


как работает:
http://thumbnail.sorl.net/operation.html

Если интересно как в темплейте работает: темплейт-тег просто получает картинку с параметрами. Генерирует или берёт из кеша. Возвращает новую картинку. “as im” — простоговорит какое имя для новой переменной взять. Ну а дальше как обычно.
То есть в моделях ничего прописывать не нужно?
Странно, вроде так и сделал, но ничего не выводится. Как проверить работает ли этот компонент?



Офлайн

#4 Фев. 12, 2012 18:21:44

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

http://thumbnail.sorl.net/reference/settings.html
settings.THUMBNAIL_DEBUG=True

Ну и вообще: просто картинка выводится если не использовать thumbnail?

Что вообще дебаг сервер говорит в консоль? Что в сырцах ХТМЛ: есть ли вообще урл тумба, если есть, что говорит если открыть его?



Офлайн

#5 Фев. 12, 2012 19:18:28

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Imposeren
http://thumbnail.sorl.net/reference/settings.html
settings.THUMBNAIL_DEBUG=True

Ну и вообще: просто картинка выводится если не использовать thumbnail?

Что вообще дебаг сервер говорит в консоль? Что в сырцах ХТМЛ: есть ли вообще урл тумба, если есть, что говорит если открыть его?
Вот пример шаблона:

{% load thumbnail %} 
<h1 id="introduction">Введение</h1>
<p>
{% for room in rooms %}
</br><b>{{room.name_room}}</b> на <b>{{room.level}}</b> этаже. Описание: <b>{{room.description}}</b>
</br>{% for image in room.image_room_set.all %}
{% thumbnail '{{MEDIA_URL}}{{image.image}}' "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
<a href="{{MEDIA_URL}}{{image.image}}"><img src="{{MEDIA_URL}}{{image.image}}" border="0" height="100" width="100"></a>

{% endfor %}
вывод одинаковой картинки. В первом варианте не выводится, в исходнике ничего нет, как будто вообще не подключен, а во втором все нормально. Что я делаю неправильно?

Включил DEBUG:
No such file or directory: u'/home/pal/Django-1.2.1/mysite/media/{{MEDIA_URL}}{{image.image}}'
Я так понимаю, что не интерпретируются теги шаблонные?



Отредактировано (Фев. 12, 2012 19:29:24)

Офлайн

#6 Фев. 13, 2012 11:00:05

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

> thumbnail ‘{{MEDIA_URL}}{{image.image}}’
вы пытаетесь ему “ссылку” на картинку дать. Передавайте сам объект (без кавычек):
{% thumbnail image.image “100x100” crop=“center” as im %}

Внутри темплейт-тегов переменные не надо окружать фигурными скобками. Т.е. у вас фигурные скобки просто как часть строки ‘строка в кавычках’ интерпретируются. thumbnail`у можно передавать и объекты и строки. Строки он “скачает” и обработает. Ну а почему у вас “неправильная” строка я уже объяснил



Офлайн

#7 Фев. 13, 2012 12:58:22

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Imposeren
> thumbnail ‘{{MEDIA_URL}}{{image.image}}’
вы пытаетесь ему “ссылку” на картинку дать. Передавайте сам объект (без кавычек):
{% thumbnail image.image “100x100” crop=“center” as im %}

Внутри темплейт-тегов переменные не надо окружать фигурными скобками. Т.е. у вас фигурные скобки просто как часть строки ‘строка в кавычках’ интерпретируются. thumbnail`у можно передавать и объекты и строки. Строки он “скачает” и обработает. Ну а почему у вас “неправильная” строка я уже объяснил
Спасибо за подробный ответ.
Мне казалось, что так я могу передать адрес картинки, а не объект типа картинки. Но уже понял, что шаблонные теги не интерпретируются внутри тега.

Скажите пожалуйста, как мне в таком выводе ограничить вывод 1 или 2 записями:
{% for image in room.image_room_set.all %}
{% thumbnail image.image "120x120" crop="center" as im %}
Мне не нужно в данном месте отображать все картинки, а только 1 или 2. Если я пишу так
{% for image in room.image_room_set.all[:1] %}
{% thumbnail image.image "120x120" crop="center" as im %}
то не работает.
Спасибо з помощь



Офлайн

#8 Фев. 13, 2012 17:17:48

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

{% for image in room.image_room_set|slice:“:2” %}
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#slice

Есть куча полезных стандартных тегов и фильтров.



Офлайн

#9 Фев. 13, 2012 18:49:12

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Sorl Thumbnail как использоавт в шаблоне?

Imposeren
{% for image in room.image_room_set|slice:“:2” %}
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#slice

Есть куча полезных стандартных тегов и фильтров.
Действительно, я не подумал. Мне казалось что _set возвращает не list, а объекты. И еще, тот вариант, который Вы написали не работает.
Работает так:
{% for image in room.image_room_set.all|slice:“:2” %}
Хотя при наличии большого количества объектов все равно выбираются все, а потом обрабатывается список. Если будет много записей в БД все затормозит. Я правильно понимаю? Может есть еще решение?
Так же хотел сделать так:
{% for image in room.image_room_set.all|random|slice:“:2” %}
Однако получаю ошибку: object is not iterable



Отредактировано (Фев. 13, 2012 19:00:41)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version