Как правильно избежать кода Jinja на шаблоне? - PullRequest
1 голос
/ 04 мая 2020

Как вывести код jinja на шаблон?

Например, у меня есть маршрут, который должен отображать код jinja на данном шаблоне HTML, например:

<code>from app import app
from flask import render_template
from jinja2 import Template

@app.route('/View/Package')
def getView():
    HtmlDesc="""
    <div class="codehilite"><pre><span></span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">/</span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">/</span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">.</span><span class="n">py</span>
    
"" "return render_template ('package. html ', html = Template (HtmlDes c). render ())

В шаблоне я попытался экранировать код jinja с {% raw %}..{% endraw %} и {% filter escape %} .. {% endfilter %}, как задокументировано здесь но все равно не работает:

<h1>Project Description</h1>
    <div class="project-description">   
    {% raw %}{% filter escape %}{{html|safe}}{% endfilter %}{% endraw %}
    </div>
</div>

За исключением:

TemplateSyntaxError: непредвиденный '<' </p>

Я знаю, что ошибка в {{</span><span... и class="p">}}, значение HtmlDesc, поэтому я ищу правильный способ экранирования такого рода символов jinja, чтобы правильно отобразить этот код jinja в шаблоне. Спасибо.

Добавлено

Я пытаюсь добиться того, чтобы я хотел, чтобы код html и jinja HtmlDesc интерпретировался и корректно отображался в веб-браузере. В моем реальном приложении приведенный выше текст не является фиксированным значением, как в приведенном выше фрагменте, он считывает значение из текстового файла README, который включает в себя python пакет и конвертируется в HTML код. Приведенный выше пример текста читается из python package cookiecutter .

1 Ответ

1 голос
/ 04 мая 2020

Добавить | безопасно до конца все, что вы хотите отобразить. Это сделает это. Сделайте это тоже строкой.

Внутри шаблона вы, кажется, пропускаете |safe в {{ }} внутри разметки

Также вы должны удалить Template(), чтобы убедиться, что что вся строка экранирована

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