簡體   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