Сохранение изображений из веб-скраппинга в Django
У меня есть такая модель:
#models.py
class Post(models.Model):
cover = models.ImageField(upload_to="news/", blank=True, max_length=255)
У меня есть функция для извлечения или скрапирования веб-сайта, например, такая:
#views.py
def pull_feeds(request, pk):
source = Autoblogging.objects.get(pk=pk)
url = requests.get(source.url)
soup = BeautifulSoup(url.content, "html.parser")
img_link = body[body.find('src=')+5:body.find('alt')-2]
resp = requests.get(img_link)
fp = BytesIO()
fp.write(resp.content)
file_name = img_link.split("/")[-1]
post = Post()
post.cover.save(file_name, files.File(fp))
Я создал эту функцию, используя эту ссылку: https://stackoverflow.com/a/43650607/14288119
Но это работает только тогда, когда нет файла настроек production. Если файл production.py существует, он возвращает ошибку "Empty file"
Это мой settings/production.py:
import os
import dj_database_url
from .base import *
SECRET_KEY = os.environ.get('SECRET_KEY', 'your-default-secret-key')
DEBUG = False
ALLOWED_HOSTS = ['topvineyards.herokuapp.com']
INSTALLED_APPS += [
'cloudinary',
'cloudinary_storage',
]
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)
# Cloudinary config
CLOUDINARY_STORAGE = {
'CLOUD_NAME': os.environ.get('CLOUD_NAME'),
'API_KEY': os.environ.get('CLOUD_API_KEY'),
'API_SECRET': os.environ.get('CLOUD_API_SECRET')
}
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
CORS_REPLACE_HTTPS_REFERER = True
HOST_SCHEME = "https://"
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_SECONDS = 1000000
SECURE_FRAME_DENY = True
Кто-нибудь знает, почему появляется эта ошибка? Или у кого-нибудь есть решение этой проблемы (сохранить изображение с другого сайта в поле изображения моего django)?