Публикация изображений трясогузки программно не отражается в FEPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Публикация изображений трясогузки программно не отражается в FE

Сообщение Гость »


Создана команда управления для импорта контента из приложения Headway в трясогузку. Поскольку у headwayapp нет API, я скопировал HTML в отдельный файл и проанализировал его. Все работает нормально, кроме изображений. Если я не нажму «Опубликовать» на этой конкретной странице в изображениях панели администратора, это не отразится. Весь остальной контент работает нормально. Вот команда управления Любая помощь будет оценена по достоинству!

из django.core.management.base import BaseCommand со страницы импорта wagtail.models из wagtail.images.models импортировать изображение из wagtail.embeds.models импорт Встроить from home.models import ChangelogPost, Категория, Продукт из bs4 импорт BeautifulSoup из даты и времени импорта даты и времени импортировать UUID из io импортировать BytesIO запросы на импорт импортировать повторно из django.core.files.images импортировать ImageFile Команда класса (BaseCommand): help = «Импортируйте содержимое HTML в Wagtail как объекты ChangelogPost». def handle(self, *args, **kwargs): с open("subscription/migrateHTML/migrate.html", "r",coding='utf-8') как f: html_doc = f.read() суп = BeautifulSoup(html_doc, 'html.parser') содержание = [] blog_divs = суп.find_all('div', class_='changelogItem опубликован') для div в blog_divs: h2 = div.find('h2') content_div = div.find('div', class_='content') р = content_div.find('p') img_tags = content_div.find_all('img') img_htmls = [img.prettify() для img в img_tags] h3 = content_div.find('h3') если h3: span_text = h3.text.strip() # Получаем содержимое в формате html, игнорируя тег img to_decompose = [] для ребенка в p.next_siblings: суп = BeautifulSoup(str(child), 'html.parser') если суп.find('img') не имеет значения None: to_decompose.append(дочерний) для ребенка в to_decompose: дочерний.разложить() # Получаем HTML-код содержимого, игнорируя тег span content_html = ''.join( str(sibling) для брата в p.next_siblings, если sibling.name != 'span') # включаем первый тег p в контент content_html = str(p) + content_html # Извлечь дату_публикации из тега времени date_published = div.find( 'time')['datetime'] if div.find('time') else None если дата_опубликовано: # Конвертируем дату_публикации в правильный формат date_published = datetime.strptime( date_published, "%Y-%m-%dT%H:%M:%SZ").strftime("%Y-%m-%d") если h2: # Добавьте текст диапазона в качестве четвертого значения контент.добавление( [h2.text.strip(), content_html, img_htmls, span_text, date_published]) родительская_страница = Page.objects.filter(slug="home")[0] категории = Категория.объекты.все() продукт = Product.objects.all().first() для индекса в диапазоне (len(content)): # Генерируем случайный UUID unique_id = uuid.uuid4() unique_id_str = str(unique_id).replace('-', '')[:10] val = содержимое[индекс] match = [категория для категории в категориях, если val[3] == категория.имя] img_arr = [] если val[2] не равен None: для элемента в val[2]: img_src_regex = r'src="([^"]*)"' src = re.search(img_src_regex, item).group(1) если не src.startswith('https://'): источник = 'https:'+источник http_res = request.get(src) title = str(uuid.uuid4().int)[:6] + '.jpg' изображение = Изображение(заголовок=заголовок, файл=Файл_изображения( BytesIO(http_res.content), имя=заголовок)) изображение.сохранить() imgstr = f"""""" img_arr.append(imgstr) если img_arr: для меня в img_arr: значение[1] += им страница = Сообщение журнала изменений( заголовок=значение[0], content=f"""{val[1]}""", слизень = уникальный_id_str, опубликованная_дата=значение[4], категории = совпадение, продукты=[продукт] ) новая_страница = родительская_страница.add_child(экземпляр=страница) новая_страница.save_revision().publish() self.stdout.write( self.style.SUCCESS( f «Миграция успешно завершена» ) ) Я пытался опубликовать new_page.save_revision().publish() с помощью этой команды, но изображения не отображаются. В идеале изображение должно отображаться.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»