Я работаю над своим сайтом с шаблонами Flask и Jinja, и у меня есть странная ошибка в отношении включения изображений в шаблоны. У меня есть шаблон post.html
, который наследуется от base.html
, и ему передается объект post из базы данных SQL. Проблема в том, что некоторые функции шаблонов Jinja не вызываются, когда я это делаю, а именно теги HTML-изображения неправильно загружаются на основе вызова url_for()
. Регулярные HTML-теги хороши, так как я использую |safe
, чтобы заставить их обрабатываться.Функции флагов вызова внутри шаблонов
Пример из post.html
шаблона:
{% extends "base.html" %}
{% block content %}
<div class="post-description">
<p>
{{post.body|safe}}
</p>
</div>
{% endblock %}
Пример из этого post.body
вызова:
<b> I work, and am bolded</b>
<img src="{{ url_for('static', filename = 'images/randomImg.png') }}">
Хотя жирный текст показывает вверх штраф, url_for
никогда не вызывается. В исходном источнике (на самом веб-сайте) это легко проверить, поскольку ссылка src никогда не представляется должным образом, в отличие от других страниц, на которых функция оценивается. Если скопировать/вставить <img>
линию, так что теперь мой post.html
выглядит следующим образом:
{% extends "base.html" %}
{% block content %}
<div class="post-description">
<p>
<img src="{{ url_for('static', filename = 'images/randomImg.png') }}">
{{post.body|safe}}
</p>
</div>
{% endblock %}
Первые нагрузки вызовов изображение мелких, но тот, что внутри post.body нет. Я не уверен, есть ли способ Flask или Jinja заставить его оценить его, но я надеюсь на это.
Редактировать Решение: Хитрость в том, чтобы оказать первую post.body внутри вызова render_template_string
, так как это будет правильно «заполнить» на url_for
вызовы, так что render_template
может затем оценить должным образом.
Я попробовал ваше первое решение, но я не смог получить функцию под названием до сих пор. Я быстро создал файл «blank.html», который содержит только '{{data | сейф}} '. Затем я дважды вызываю «render_template»: «render_template ('blank.html', data = render_template ('blank.html', data = post.body))' без изменений, к сожалению –
Вы имеете в виду, что 'rendered_post_body' не содержать оцененный 'url_for'? Если да, можете ли вы напечатать 'post.body' и' rendered_post_body' внутри ** view ** и предоставить вывод? –
Вам нужно ['render_template_string'] (http://flask.pocoo.org/docs/0.10/api/#flask.render_template_string) не' render_template' для создания 'rendered_post_body'. Помните, что первым аргументом 'render_template' считается путь к шаблону. –