Как передать файл SVG из функции представлений в шаблон? - PullRequest
0 голосов
/ 16 апреля 2019

В моем файле views.py у меня есть функция, которая при вызове через запрос генерирует файл .svg.Затем я хочу, чтобы эта функция отображала шаблон и отображала указанный файл .svg.

Код, который у меня имеется (упрощенно):

views:

def home(request):
    # ---------------------------------------
    # generate test.svg file and save to a buffer
    # ---------------------------------------

    svg_data = open("buffer/test.svg", "rb").read()

    data = {
        'image': svg_data
        }

    return render(request, 'blog/home.html', data)  

template:

{% extends "blog/base.html" %}
{% block content %}
<svg>
    {{ image }}
</svg>
{% endblock content %}    

К сожалению, когда я пытаюсь получить доступ к тегу {{image}} в шаблоне, он ничего не отображает.Поэтому я спрашиваю, есть ли способ загрузить файл .svg в мою функцию представлений и отобразить его в моем шаблоне?

1 Ответ

1 голос
/ 16 апреля 2019

Если ваше изображение SVG находится в папке шаблонов, вы можете просто использовать:

<svg>
    {% include "buffer/test.svg" %}
</svg>

Или, если местоположение файла находится где-то, отличное от вашего каталога шаблонов, вы можете создать собственный тег фильтра ииспользуйте тег.

@register.simple_tag
def include_anything(file_name):
    return open(file_name).read()

, а затем используйте {% include_anything '/full/path/to/file.svg' %}

источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...