-1

我有一个简单的模型表单,它通过以下 jinja2 模板呈现:

<form method="POST" action=""> 
    <table>
      {% for field in form %}   

      <tr>{{ field.label }}</tr>
      <tr>{{ field()|safe }}</tr>

      <tr>
        {% if field.errors %}
        <td>
          <ul class=errors>
            {% for error in field.errors %}
            <li>{{ error }}</li>
            {% endfor %}
          </ul>
        </td>
        {% endif %}
        {% endfor %}
    </table>
    <input type="submit" class="btn"  value="Submit Form"/>
  </form>

我想自定义 wtforms 的输出,并对每个要呈现的表单字段,我想添加一个类"required"来使用 jquery 客户端验证插件。

以下是我的 appengine 数据库模型:

class Song(db.Model):
    title = db.StringProperty()
    lyrics = db.TextProperty()
    duration = db.IntegerProperty()
    movie = db.ReferenceProperty(Movie)
    singer = db.ReferenceProperty(Singer)

以下是我的表单,渲染脚本:

SubTaskForm = model_form(Song, 
                         exclude=('movie', 'singer'),
                         )

使用 wtfroms 验证器附加验证器的好方法是什么,以及如何将class=required附加到表单字段?

让我知道该怎么做。

4

3 回答 3

3

看看这个库https://pypi.python.org/pypi/WTForms-ParsleyJS从 WTForms 服务器端验证器自动生成客户端 parsley.js 验证标签。

http://codevisually.com/parsley-js/ Parsley.js 是一个轻量级(12k 缩小)表单验证 JavaScript 库,具有不同之处。它不是使用 JS 验证表单,而是使用数据属性来实现相同的效果。它适用于 jQuery 和 Zepto,并且非常易于配置,允许您覆盖几乎所有 Parsley 默认行为以满足您的确切需求。

于 2013-08-08T20:20:03.320 回答
1

一种方法是覆盖 python 中定义它们的东西,另一件可以做的事情是,你可以在模板本身中<tr class="required"> 尝试,试一试,应该可以。

于 2012-07-03T05:59:55.440 回答
0

The renderer (field()) passes on arguments as attributes in the generated HTML. So, by calling, e.g., field(class='required') you can mark the field(s) as required and apply the jquery validate plugin as usual. If your context treats 'class' as a keyword, you can pass in 'class_'. Details in the call note for WTForms.field.

于 2013-02-07T15:09:44.473 回答