【问题标题】:Tornado templates setting value fieldTornado 模板设置值字段
【发布时间】:2016-08-30 16:43:28
【问题描述】:

我有一个 python 数组:

a=["a","b","c","d","e","f"]

我将此作为值传递给龙卷风渲染:

 self.render("index.html", a=a)

在我的 html 中,我有以下内容:

  <input type="hidden" id="xxx" value="
  {% for c in a %}
     {{c}}
  {% end %}
  "/>

这给了我以下混乱的输出:

<input type="hidden" id="xxx" value="

a

b

c

d

e

f

"/>

我尝试使用 {{c.strip()}} ,但效果相同。我也尝试混合使用javascript,但是在渲染填充值字段后javascript没有执行。我希望html正常,即value="a b c d e f"

有谁知道我如何做到这一点?

【问题讨论】:

    标签: python html tornado


    【解决方案1】:

    试试 Tornado 的 filter_whitespace 功能,这是 4.3 版的新功能。

      {% whitespace oneline %}
      <input type="hidden" id="xxx" value="{% for c in a %}
         {{c}}
      {% end %}"/>
      {% whitespace all %}
    

    仍然会有一些额外的空间,但它更接近你想要的。

    【讨论】:

    • 谢谢杰西不知道!
    【解决方案2】:

    只需在后端加入列表即可。

     self.render("index.html", a=' '.join(a))
    

    并使用,

    <input type="hidden" id="xxx" value="{{ a }}" />
    

    在模板中

    【讨论】:

    • 不错的方法谢谢。我想知道是否也有模板方法可以做到这一点
    • @xenophon 或创建自定义过滤器以按空格加入列表项。见stackoverflow.com/a/13003440/3297613
    【解决方案3】:

    与@Avinash 回答的相同,仅在模板中:

    <input type="hidden" id="xxx" value="{{ ' '.join(a) }}" />
    

    Tornado 模板与 Django 或 Jinja 等其他模板引擎不同,它允许在模板中使用任意 Python 表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多