Динамическая трясогузка bgcolor templatetags

Я пытаюсь получить динамический цвет фона с тегами шаблона трясогузки, когда конвертирую изображение следующим образом:

{% load wagtailimages_tags %}
{% image my_file width-768 format-jpeg bgcolor-171721 as image_jpeg %}
<img src="{{ image_jpeg.url }}"/>

Как я могу изменить значение bgcolor-171721 с помощью динамической переменной в моем шаблоне?


person Alexis Le Baron    schedule 19.06.2020    source источник


Ответы (1)


Я не думаю, что возможно иметь динамические token части для Django Тег шаблона.

Однако вы можете сгенерировать воспроизведение с динамическими частями по запросу (модель страницы). В документации по трясогузке объясняется, как создать представление в Python. Токены похожи, но генерируются как одна строка, разделенная символом |.

Затем вы можете передать это в контекст шаблона через метод `get_context'.

models.py
class MyPage(Page):
    # ...

    def get_context(self, request):
        # Update context to include an image rendition with a dynamic bg
        context = super().get_context(request)
        # https://docs.wagtail.io/en/stable/advanced_topics/images/renditions.html
        some_dynamic_value = 'DDA0DD'
        context['image_jpeg'] = self.my_image.get_rendition('width-768|bgcolor-%s|format-jpeg' % some_dynamic_value)
        # you can use this within the template the same way - <img src="{{ image_jpeg.url }}"/>
        return context

Вы можете пойти дальше и создать собственный тег шаблона, который принимает динамический цвет фона (или считывает его из контекста шаблона), но это может не стоить дополнительной сложности.

person LB Ben Johnston    schedule 21.06.2020