将烧瓶/ python中的变量传递给HTML,然后返回

时间:2019-08-19 10:18:20

标签: python html variables flask

我有一个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}},但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

url_forfiles[i]都是代码,因此它们可以在同一{{ }}中运行

"{{ url_for('switch', switch=files[i]) }}"

您也可以使用

 {%for item in files %} 

  "{{ url_for('switch', switch=item) }}" 

您将不需要len