#python #django #wordpress #wagtail
#python #django #wordpress #wagtail
Вопрос:
Я пытаюсь импортировать сообщения из WordPress в Wagtail, включая изображения.
Я осознаю тот факт, что редактор черновиков сохраняет изображения с выделенным тегом, например:
<embed alt="fonctionnement-pim-schema-640.png" embedtype="image" format="fullwidth" id="412" />
Когда я импортирую свои сообщения из WordPress, я конвертирую теги img в теги для встраивания. Ниже приведен фрагмент моего кода:
resp = requests.get(img["src"], stream=True)
if resp.status_code != requests.codes.ok:
print("Unable to import " img["src"])
continue
fp = BytesIO()
fp.write(resp.content)
image = Image(title=file_name, width=width, height=height)
image.file.save(file_name, File(fp))
image.save()
try:
embed_id = image.get_rendition("original").id
embed_alt = image.get_rendition("original").alt
new_tag = soup.new_tag('embed', alt=f'{embed_alt}', embedtype="image", format="fullwidth", id=f'{embed_id}')
img.replace_with(new_tag)
Кажется, это работает. Когда я проверяю базу данных, все img
теги заменяются правильно отформатированным встроенным тегом, и все изображения загружаются в папку мультимедиа.
К сожалению, когда я проверяю область администратора. Тег embed существует, но изображение не распознается:
Когда я использую общий тег для встраивания в свой сценарий импорта (я имею в виду без использования «форматирования», но один и тот же код для встраивания для всех изображений), импорт работает хорошо (в том числе в Draftail). Может ли «форматировать» или «f string» вводить что-то не так?
Любая помощь будет очень признательна!
Заранее благодарю.
Ответ №1:
Я нашел причину проблемы.
Я использовал изображение для извлечения идентификатора:
embed_id = image.get_rendition("original").id
Но визуализация предназначена для шаблонов. В черновике нам нужно использовать идентификатор объекта изображения, а не идентификатор изображения визуализации:
embed_id = image.id
Для alt
текста вам нужно выбрать что-то из вашего исходного содержимого.