Flask:TypeError:使用FlaskWTF进行验证时,无法调用“str”对象

2024-05-29 03:01:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的表单,我正在尝试测试表单验证。我要离开Flask Megatutorial by Miguel Grinberg。我刚遇到麻烦。在

回溯如下:

Traceback (most recent call last):
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/app/views.py", line 32, in login
    if form.validate_on_submit():
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/flask_wtf/form.py", line 101, in validate_on_submit
    return self.is_submitted() and self.validate()
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/wtforms/form.py", line 310, in validate
    return super(Form, self).validate(extra)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/wtforms/form.py", line 152, in validate
    if not field.validate(self, extra):
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/wtforms/fields/core.py", line 204, in validate
    stop_validation = self._run_validation_chain(form, chain)
  File "/Users/naman/Desktop/dev/pythonstuff/flaskStuff/microblog/flask/lib/python3.6/site-packages/wtforms/fields/core.py", line 224, in _run_validation_chain
    validator(form, self)
TypeError: 'str' object is not callable

这是我的路线功能:

^{pr2}$

我检查了Flask WTF文档,发现validate_on_submit是一个函数,而不是字符串。https://flask-wtf.readthedocs.io/en/stable/quickstart.html#validating-forms

有人能帮帮我吗?在

编辑:以下是forms.py的外观:

from flask_wtf import Form
from wtforms import StringField, BooleanField
from wtforms.validators import DataRequired

class LoginForm(Form):
    openid = StringField('openid', validators=['DataRequired()'])
    remember_me = BooleanField('remember_me', default=False)

Tags: inpydevflasklibpackageslinesite
1条回答
网友
1楼 · 发布于 2024-05-29 03:01:26

请按如下方式修复您的LoginForm,您能试试吗?。在

from flask_wtf import Form
from wtforms import StringField, BooleanField
from wtforms.validators import DataRequired
from wtforms import validators

class LoginForm(Form):
    openid = StringField('openid', [validators.DataRequired()])
    remember_me = BooleanField('remember_me', default=False)

相关问题 更多 >

    热门问题