Найти - Пользователи
Полная версия: Sorl Thumbnail как использоавт в шаблоне?
Начало » Django » Sorl Thumbnail как использоавт в шаблоне?
1
pal201
Читаю документацию, там вижу {% load thumbnail %} и далее такой код:
{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
Это значит все сделается на лету и не нужно больше ни где ничего определять? Вообще не могу понять как это все работает. Не могли бы пояснить?
Imposeren
Ну все как в документации: Пропсать в settings.INSTALLED_APPS
в темплейте сделать {% load thumbnail %}


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

Если интересно как в темплейте работает: темплейт-тег просто получает картинку с параметрами. Генерирует или берёт из кеша. Возвращает новую картинку. “as im” — простоговорит какое имя для новой переменной взять. Ну а дальше как обычно.
pal201
Imposeren
Ну все как в документации: Пропсать в settings.INSTALLED_APPS
в темплейте сделать {% load thumbnail %}


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

Если интересно как в темплейте работает: темплейт-тег просто получает картинку с параметрами. Генерирует или берёт из кеша. Возвращает новую картинку. “as im” — простоговорит какое имя для новой переменной взять. Ну а дальше как обычно.
То есть в моделях ничего прописывать не нужно?
Странно, вроде так и сделал, но ничего не выводится. Как проверить работает ли этот компонент?
Imposeren
http://thumbnail.sorl.net/reference/settings.html
settings.THUMBNAIL_DEBUG=True

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

Что вообще дебаг сервер говорит в консоль? Что в сырцах ХТМЛ: есть ли вообще урл тумба, если есть, что говорит если открыть его?
pal201
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}}'
Я так понимаю, что не интерпретируются теги шаблонные?
Imposeren
> thumbnail ‘{{MEDIA_URL}}{{image.image}}’
вы пытаетесь ему “ссылку” на картинку дать. Передавайте сам объект (без кавычек):
{% thumbnail image.image “100x100” crop=“center” as im %}

Внутри темплейт-тегов переменные не надо окружать фигурными скобками. Т.е. у вас фигурные скобки просто как часть строки ‘строка в кавычках’ интерпретируются. thumbnail`у можно передавать и объекты и строки. Строки он “скачает” и обработает. Ну а почему у вас “неправильная” строка я уже объяснил
pal201
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 %}
то не работает.
Спасибо з помощь
Imposeren
{% for image in room.image_room_set|slice:“:2” %}
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#slice

Есть куча полезных стандартных тегов и фильтров.
pal201
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
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