在flask的web項目中出現如下錯誤:
127.0.0.1 - - [12/Dec/2019 18:32:47] "POST /login HTTP/1.1" 500 -
127.0.0.1 - - [12/Dec/2019 18:33:37] "GET /login HTTP/1.1" 200 -
[2019-12-12 18:33:41,714] ERROR in app: Exception on /login [POST]
Traceback (most recent call last):
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "E:\Python_virtualenvs\envs\lib\site-packages\flask\app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "E:\pycharmWorkSpace\flask\flask_study\myapp\views.py", line 30, in login
if form.validate_on_submit():
File "E:\Python_virtualenvs\envs\lib\site-packages\flask_wtf\form.py", line 101, in validate_on_submit
return self.is_submitted() and self.validate()
File "E:\Python_virtualenvs\envs\lib\site-packages\wtforms\form.py", line 310, in validate
return super(Form, self).validate(extra)
File "E:\Python_virtualenvs\envs\lib\site-packages\wtforms\form.py", line 152, in validate
if not field.validate(self, extra):
File "E:\Python_virtualenvs\envs\lib\site-packages\wtforms\fields\core.py", line 206, in validate
stop_validation = self._run_validation_chain(form, chain)
File "E:\Python_virtualenvs\envs\lib\site-packages\wtforms\fields\core.py", line 226, in _run_validation_chain
validator(form, self)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given
127.0.0.1 - - [12/Dec/2019 18:33:41] "POST /login HTTP/1.1" 500 -
錯誤地方是:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired])
password = PasswordField('Password', validators=[DataRequired])
remember_me = BooleanField('Remember Me')
submit = SubmitField('Sign In')
代碼中的 validators=[DataRequired] 改成 validators=[DataRequired()] 即可