В настоящее время немного застрял, задаваясь вопросом, может ли кто-нибудь помочь. Я использую django-adminfiles . Который является аккуратным небольшим приложением. Я хочу использовать его для вставки изображений в посты / статьи / страницы сайта, который я создаю.
Как работает django-adminfiles, он вставляет заполнитель, т. Е. <<< ImageFile >>>, и это визуализируется с использованием шаблона django. Он также имеет функцию вставки пользовательских опций, т. Е. (Вставка среднего изображения), я подумал, что использовал бы это для автоматического изменения размера изображений и включения его в сообщение (аналогично тому, как это делает WP).
Django-adminfiles использует приложение sorl.thumbnail для создания миниатюр.
Итак, я попытался протестировать генерацию миниатюр:
Текущий шаблон, который используется для рендеринга вставленного изображения:
{% spaceless %}
<img src="{{ upload.upload.url }}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" />
{% endspaceless %}
Я пытался изменить это на:
{% load thumbnail %}
{% spaceless %}
<img src="{% thumbnail upload.upload.url 200x50 %}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" />
{% endspaceless %}
Я получаю ошибку:
Exception Value:
Caught an exception while rendering: Source file: '/media/uploads/DSC_0014.jpg' does not exist.
Я подумал, что миниатюре нужен абсолютный путь, поэтому попытался вставить его в шаблон, и это работает.
То есть это работает:
{% thumbnail '/Users/me/media/uploads/DSC_0014.jpg' 200x50 %}
Так что в основном мне нужно сгенерировать абсолютный путь к файлу, дать относительный путь (к корню сети). Вы можете сделать это, передав параметр MEDIA_ROOT шаблону, но причина, по которой я хочу сделать тег шаблона, заключается в том, чтобы программно установить размер изображения.
Обновление
Попробовал это согласно ответу ниже:
templatetag:
from django import template
from proj.settings import MEDIA_ROOT
register = template.Library()
@register.filter(name='path')
def path(value):
value = MEDIA_ROOT + '/' + value
return value
Шаблон:
{% load thumbnail %}
{% load images %}
{% spaceless %}
<img src="{{ upload.upload.url|path }}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" />
{% endspaceless %}