繁体   English   中英

WTForms不验证 - 没有错误

[英]WTForms doesn't validate - no errors

我在WTForms库中遇到了一个奇怪的问题。 对于测试,我创建了一个包含单个字段的表单:

class ArticleForm(Form):
    content = TextField('Content')

它接收一个简单的字符串作为内容,现在我使用form.validate() ,它因任何原因返回False

我查看了'FormField对象的validate()方法。 我发现如果错误列表的长度为零,则该字段返回true。 这对我的测试来说是正确的,因为我没有得到任何错误。 在shell中,我的字段验证按预期返回True。

Form对象中的validate()方法只在字段上运行并调用其validate()方法,并且只有在其中一个字段被验证为false时才返回false。

因此,我的字段在没有任何错误的情况下得到验证,我无法在代码中看到任何原因,为什么form.validate()返回False

有任何想法吗?

在我看来,你只是将错误的值传递给你的表单。 这是你需要使用这样的形式:

from wtforms import Form, TextField # This is wtforms 0.6

class DummyPostData(dict):
    """
    The form wants the getlist method - no problem.
    """
    def getlist(self, key):
        v = self[key]
        if not isinstance(v, (list, tuple)):
            v = [v]
        return v

class ArticleForm(Form):
    content = TextField('Content')

form = ArticleForm(DummyPostData({'content' : 'my content' }))
print form.validate()
#$ python ./wtf.py 
#True

ps:如果您提供更明确的信息会更好:代码示例和WTForms版本。

你传递给表单的构造函数是什么? 您没有提供有关如何使用表单的任何上下文。

表单的第一个参数必须是表单数据输入包装器。 有效的包括但不限于:

  • Django( request.POSTrequest.GET
  • Werkzeug( request.formrequest.args
  • WebOb(取决于;包括Pylon / Pyramid,TurboGears和google appengine webapp框架)
  • cgi.FieldStorage或等价物

在类似django的视图中使用如下所示:

def view(request, article_id):
    article = Article.objects.get(article_id)
    form = ArticleForm(request.POST, obj=article)
    if request.POST and form.validate():
        # do something
    # render stuff, etc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM