Django Преобразование всех изображений Webp из шаблона в Png / Jpg только в браузерах Apple Safari - PullRequest
0 голосов
/ 17 июня 2020

Если вы используете изображения webp по умолчанию в Django, как бы вы go преобразовали изображения webp из базы данных в png или jpg только в браузерах Apple Safari, сохраняя при этом webp по умолчанию для всех остальных браузеров?

Подойдет ли Pillow для этого? Как бы вы объединили его в представления и шаблон для l oop?

from PIL import Image
image = Image.open("test.webp").convert("RGB")
image.save = ("test.jpg", jpeg)
image.save = ("test.png", png)

Определить агент пользователя:

https://pypi.org/project/django-user-agents/

Может быть, альтернативой было бы обнаружение пользовательского агента в заголовках?

Нужно ли сохранять преобразованные изображения в папке имя_проекта / media / (где сейчас находится {{object.thumbnail.url}} указывает на? Или это go в имя_проекта / static /? Может быть, изображения могут быть удалены (возможно, задание cron) после закрытия сеанса Safari или перехода на другое представление? Не уверен, что лучший способ сделать это.

Код:

HTML:
​
{% for object in object_list %}
<img src="{{ object.thumbnail.url }}" alt="{{ object.thumbnail_alt }}"/>
{% endfor %}
​
​
Models.py:
​
class Course(models.Model):
    thumbnail = models.ImageField(blank=True, null=True, max_length=255)
    thumbnail_alt = models.CharField(blank=True, null=True, max_length=120)
​
​
Views.py:
​
class CourseListView(ListView):
        model = Course
        template_name = 'courses/course_list.html'
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['form'] = self.form
        return context
    def get_queryset(self):
        qs = super().get_queryset()
        self.form = form = CourseForm(self.request.GET)
        #Queries for form go here
        return qs
...