Django - Как динамически загружать сгенерированный SVG

Я пытаюсь загрузить SVG-графику во время выполнения на мою веб-страницу Django. Графика генерируется по запросу и зависит от различных пользовательских вводов.

Если я использую шаблоны, подобные этому:

{% extends "app/base.html" %}
{% block content %}
<h1>Internal Requirements Tree</h1>

<div>
    {{ svg }}
</div>
{% endblock content %}

с соответствующим представлением:

def internal_reqs(request):
    with open("some/path/to/graph.svg") as f:
        base_image = f.readlines()

    # remove XML header
    while '<svg ' not in base_image[0]:
        base_image.pop(0)

    context = {
        'title': 'Title',
        'svg': '\n'.join(base_image),
    }
    return render(request, 'app/graph.html', context)

источник SVG будет напечатан, но не отображен.

Но если я помещу ту же строку из svg непосредственно в шаблон, как это:

{% extends "app/base.html" %}
{% block content %}
<h1>Internal Requirements Tree</h1>

<div>
    {{ svg }}
</div>

<div class="center">
    <svg width="570pt" height="100pt"
         viewBox="0.00 0.00 570.00 100.00"
         xmlns="http://www.w3.org/2000/svg"
         xmlns:xlink="http://www.w3.org/1999/xlink">
        <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 96)">
            ....
        </g>
    </svg>
</div>
{% endblock content %}

он будет отображаться просто отлично.

Как правильно это сделать?

Вернуться на верх