У меня есть веб-сайт Wagtail. Сайт создается через Cookiecutter. Чтобы заполнить CMS исходным содержимым, я добавил команду load_initial_data
, которая может быть запущена после установки Wagtail. Это заполняет текстовое содержимое из файла JSON fixtures и перемещает изображения из папки приборов в папку media_root сайта Wagtail. Код выглядит следующим образом:Wagtail mock images show as broken in admin, но видимый на шаблоне
# load_initial_data.py
import os, shutil
from django.conf import settings
from django.core.management.base import BaseCommand
from django.core.management import call_command
class Command(BaseCommand):
def handle(self, **options):
fixtures_dir = os.path.join(settings.PROJECT_DIR, 'fixtures')
fixture_file = os.path.join(fixtures_dir, 'db.json')
image_src_dir = os.path.join(fixtures_dir, 'images')
image_dest_dir = os.path.join(settings.MEDIA_ROOT, 'original_images')
call_command('loaddata', fixture_file, verbosity=0)
if not os.path.isdir(image_dest_dir):
os.makedirs(image_dest_dir)
for filename in os.listdir(image_src_dir):
shutil.copy(os.path.join(image_src_dir, filename), image_dest_dir)
Это работает в той степени, что изображения копируются в нужную папку, и на шаблонах изображения появляются, как ожидается, при запросе. Проблема находится в пределах /admin/images/
, где запрошенная версия изображения недоступна, и поэтому браузер показывает значок сломанного изображения.
Страница админ ищет определенный размер изображения ({your-image-name}.max-165x165.{.jpg|.png|.gif}
.
Наблюдая, как изображения перейти от original_images
к images
делает вид, что они обрабатываются только после того, как в шаблоне они находятся на сначала запрашиваются. Один идея тогда может быть, чтобы создать шаблон с перечислением всех изображений (с правильным стилем), чтобы обработать их после того, как данные были загружены. Однако делать что-то вроде
{% image page.image max-165x165 as test_photo %}
<img src="{{ test_photo.url }}" width="{{ test_photo.width }}" height="{{ test_photo.height }}" alt="{{ test_photo.alt }}" />
еще возвращает разбитое изображение, а не обработать изображение с original_images
в папку images
, как я и ожидал. Я попробовал это после начальной загрузки данных, и предполагаю, что это связано с тем, что размер изображения должен иметь ссылку как в базе данных, так и в шаблоне?
Есть ли способ программно заставить Wagtail перерабатывать все изображения для создания размера и имени файла, которое ищет страница администратора изображения?
(Если уместно упомянуть, что изображения в настоящее время находятся в рамках репо проекта, но в конечном итоге это будет zip-файл, хранящийся в хранилище облачных данных, и только после этого будет импортирован в проект. пользователь хочет их или нет, изображения включены в Cookiecutter)
Спасибо Гасман. Удаление какой-либо ссылки на модель wagtailimages.rendition в файлах JSON устраняет проблему. Благодаря! – heymonkeyriot