Сохраните изображение из RSS-канала в поле изображения Django

У меня есть такая модель:

#models.py
class Post(models.Model):
    cover = models.ImageField(upload_to="news/", blank=True, max_length=255)

Затем я извлек url изображения из RSS-канала с помощью BeautifulSoup4:

#views.py
def pull_feeds(request, pk):
    source = Autoblogging.objects.get(pk=pk)
    url = requests.get(source.url)
    soup = BeautifulSoup(url.content, "html.parser")

    cover = soup.find('media:content')['url']
    Post.objects.create(cover=cover)

Подача контента выглядит следующим образом

<media:content url="https://travelcommunication.net/wp-content/uploads/2021/10/Raffles-Hotels-Bring-Legendary-Hospitality-Experience-to-Romantic-Udaipur-TRAVELINDEX-TOP25HOTELS-500x300.jpg" width="500" height="300" medium="image" type="image/jpeg"/>

Но он сохраняет только url, а не файл изображения. Как сохранить реальный файл изображения, а не url к нему?

Вы можете послать еще один GET запрос на изображение и записать ответ в файл:

...
image = requests.get(cover)
with open("image.png", "wb") as f:
    f.write(image.content)
Вернуться на верх