Flask-WTForms和隐藏字段

时间:2018-04-02 17:29:45

标签: python flask jinja2 flask-wtforms

我正在尝试生成一系列表单,每个表单都包含隐藏字段中的特定值。

以下是我的查看器模板的代码:

<div class="container">
       <form method="POST" action="{{ url_for('list') }}">
           <dl>
                        {{ form.csrf_token }}
                        {{ form.wishlist.label }}
                        {{ form.wishlist }}
                        {{ form.item_url_field(value="" ) }}

                      <input class="btn btn-primary" type="submit" value="Login">
                      </dl>
                  </form>
              </div>

我正在努力解决的具体问题是这个级别:

{{ form.item_url_field(value="" ) }}

如果我尝试这样的话:

   {{ form.item_url_field(value="{{row["item_url"]}}" ) }}

我收到此错误消息:

TemplateSyntaxError: expected token ',', got 'item_url'

是否有可能在构建隐藏字段之前自动将字符串值传递给隐藏字段?

感谢您的反馈

1 个答案:

答案 0 :(得分:1)

@app.route
def index():
    class someObj:
        def someFunc(someArg):
            return 10 + someArg
    return render_template("template.html", obj=someObj(), arg=25)

-------------
<div>
    {{ obj.someFunc(someArg=arg) }}
</div>

以上将在HTML中显示“35”。 通常,当在花括号内时,您不需要再次重写它们。即不要这样做

{{ obj.someFunc(someArg={{ arg }}) }}

您的错误是因为jinja 2认为您传递给value参数的值是“{{row [”,之后它会预期逗号分隔符,但会收到item_url。

{{ form.item_url_field(value="{{row["item_url"]}}" ) }}

应该是

{{ form.item_url_field(value=row['item_url']) }}

(如果确实row是已经注入模板范围的dict)