我有一个flask模板,在其中可以看到某个区域的所有开关的列表。 我希望此列表是所有链接,这些链接将打开一个新选项卡,其中显示本地存储的文本文件的内容。
如果我定义了正确的文件,它将很好地工作,但是如果我使用了用于在目录中显示文件的变量,它将无法正常工作。我知道问题在于HTML中url_for标记的表示法,但是正确的表示法是什么?
HTML代码:
<div class="col-sm-offset-2 main">
<h1 class="page-header">Actual switch configs of BE</h1>
<ol>
{%for i in range(0, len)%}
<ul>
<a href="{{url_for('switch', switch={{files[i]}} )}}"><span class="glyphicon glyphicon-save"></span> {{files[i]}}</a>
</ul>
{%endfor%}
</ol>
</div>
@app.route('/switch/', defaults={'switch':None})
@app.route('/switch/<switch>', methods=['GET','POST'])
@login_required
def switch(switch):
return render_template('/configs/'+directory+'/'+switch+'.txt', len = len(files), files=files, name = current_user.username)
我得到的错误是:
jinja2.exceptions.TemplateNotFound: /configs/BE_actual/{{files[i]}}.txt
这对我有意义,但我无法正确编写。 我尝试使用{{files [i] | safe}},但问题仍然存在。
答案 0 :(得分:0)
url_for
和files[i]
都是代码,因此它们可以在同一{{ }}
中运行
"{{ url_for('switch', switch=files[i]) }}"
您也可以使用
{%for item in files %}
"{{ url_for('switch', switch=item) }}"
您将不需要len