我不知道如何将html格式的句子数组传递给flask模板。
@app.route('/', methods=['POST'])
def my_form_post():
question = request.form['question'].lower()
text = request.form['text'].lower()
open = '<div class="tooltip">'
after_sentence = '<span class="tooltiptext">'
close = '</span> </div>'
out = text + " <mark> " + question + " </mark>"
return render_template('layout.html', text_out = tooltip, text_out2 = tooltip2)
在模板中我有
<div id="_out">
{{text_out|safe}}
{{text_out2|safe}}
</div>
这有效。但是我想格式化文本中的每个句子(并且我不能对其进行硬编码)(例如,为工具提示提供每个句子自己的消息)并将其作为数组传递给同一div中的相同模板。我该怎么办?
像这样的东西给模板错误
open = '<div class="tooltip">'
after_sentence = '<span class="tooltiptext">'
close = '</span> </div>'
tooltip = "first"
tooltip2 = "second"
first = open + "hello" + after_sentence + tooltip + close
second = open + "hello2" + after_sentence + tooltip2 + close
list = [first, second]
return render_template('layout.html', list)
和
<div id="_out">
<!-- {{text_out|safe}}
{{text_out2|safe}} -->
{% for item in {{list}} %}
item
{% endfor %}
</div>
将列表转换为字典也无济于事
list = {“第一”:第一,“第二”:第二} 返回render_template('layout.html',列表)
给我
TypeError: render_template() takes 1 positional argument but 2 were given
谢谢
已解决: 你需要通过字典然后做
render_template("layout.html", dic=dic)
不是
render_template("layout.html", dic)
答案 0 :(得分:0)
尝试执行以下操作:
{% for item in list %}
{{ item|safe }}
{% endfor %}
要在此处分解某些语法,{% %}
通常指的是语句(例如{% if something %}
或{% while True %}
)。当您要打印某些内容(例如{{ }}
或{{ item }}
)时,使用{{ text_out }}
。当您向打印语句中添加|
时,它指示jinja2将过滤器应用于紧接对象之前的对象。例如,|safe
表示之前提到的对象是“安全”的html,不需要进行转义。