27
Апр
2021

CSS класс в зависимости от размера изображения (DJANGO)

Есть модель джанго с полем для загрузки изображения, которое потом отображается на странице. Так вот, мне нужно к каждой модели повесить определенный флаг размера картинки, в зависимости от которого кидать её в дивы с разными классами. Я сделал такой вариант: накидал функцию, показанную ниже, и пользуюсь им в контроллере, закидывая результат функции в контекст при рендере. Всё работает, однако вариант мне этот не нравится, слишком много с ним проблем, да и с архитектурной точки зрения не оптимально, так как приходится вставлять блок с проверкой в каждом контроллере. Как можно ещё решить данную задачу? Может можно определять это напрямую через css?

функция:

def image_flag_foo(image):
    im = Image.open(image)
    (width, height) = im.size
    if width > height:
        x = width/height*100
        if x > 125:
            return 'width'
        else:
            return 'normal'
    else:
        x = height/width*100
        if x > 125:
            return 'height'
        else:
            return 'normal'

views:

if brick.image:
    image_flag = image_flag_foo(brick.image)
else:
    image_flag = 'no_image'
context = {
   'brick': brick,
   'image_flag' : image_flag,

template:

{% if image_flag == 'width' %}
  <img class="card-photo-width" src="{{brick.image.url}}" alt="">
{% endif %}
{% if image_flag == 'height' %}
  <img class="card-photo-height" src="{{brick.image.url}}" alt="">
{% endif %}
{% if image_flag == 'normal' %}
  <img class="card-photo-normal" src="{{brick.image.url}}" alt="">
{% endif %}

Источник: https://ru.stackoverflow.com/questions/1275664/css-%D0%BA%D0%BB%D0%B0%D1%81%D1%81-%D0%B2-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-%D0%BE%D1%82-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-django

Тебе может это понравится...

Добавить комментарий