Я создаю сайт в Django на Pythonanywhere.com, и я использую облако памяти Backblaze для хранения всех статических и мультимедийных файлов. Мои css и изображения, которые я загрузил в Backblaze, работают, но я не могу понять, как все должно соответствовать друг другу, так что вот где я (минимализирован):Django загрузить изображение в cdn с помощью API
В этой модели я хочу сохранить уменьшенное изображение, У меня есть форма для загрузки.
class Post(models.Model):
(...)
thumbnail = models.ImageField(null=True, blank=True, width_field="width_field", height_field="height_field")
(...)
Backblaze имеет весь код для запросов HTTP и ответы, которые мне нужны, так что я просто вставили, что в отдельном файле. Сначала мне нужно получить токен авторизации учетной записи, за которым следует URL-адрес для загрузки, а затем я могу отправить файл.
Таким образом, для всей функции в качестве входных данных нужны три вещи: дата файла, имя файла и размер файла. В качестве вывода я получаю идентификатор файла (и другие вещи, подробности here).
Теперь я задаюсь вопросом, где мне нужно вызвать эту функцию загрузки, я предполагаю, что она связана с параметром «upload_to» в ImageField. И мне интересно, что на самом деле хранится в ImageField, так как я не указываю ImageField место, где можно найти файл. Использует ли он корень носителя в файле настроек, как мне это сделать?
Вы имеете в виду, что вы не хотите хранить изображения на диске в PythonAnywhere, но вместо этого хотите сохранить его в backblaze? Являются ли изображения тем, что ваши пользователи представляют? Или у вас есть предварительно загруженные изображения, которые вы хотите отобразить сейчас? – conrad
Правильно, я хочу использовать Backblaze как CDN. У меня есть предварительно загруженные фотографии и файлы css/JavaScript, у меня есть те, кто работает. Теперь я действительно хочу, чтобы пользователи загружали изображения и хранили их. – Bob
Проверьте django-хранилища. Он поддерживает большинство хранилищ (но не backblaze). Похоже, вам просто нужно реализовать методы чтения/записи/закрытия/размера для бэкэнд, и вам хорошо идти. Вы даже можете отправить запрос на получение, чтобы заставить их объединить его вверх! – conrad