form.validate_on_submit() 缺少 1 个必需的位置参数:'self'
form.validate_on_submit() missing 1 required positional argument: 'self'
我正在尝试呈现包含表单的模板并验证表单中的信息。我收到以下错误:
app\views.py", line 47, in signup
if form.validate_on_submit():
TypeError: validate_on_submit() missing 1 required positional argument: 'self'
这是我的代码:
app/views.py:
from .forms import SignUp
from .models import User
@app.route('/signup', methods=["GET", "POST"])
def signup():
form = SignUp
if form.validate_on_submit():
user = User(
email=form.email.data,
username=form.username.data,
first_name=form.first_name.data,
last_name=form.last_name.data
)
db.session.add(user)
db.session.commit()
return 'success'
return render_template('signup.html', form=form)
app/forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.fields.html5 import EmailField
from wtforms.validators import DataRequired, Email
class SignUp(FlaskForm):
email = EmailField('Email', validators=[DataRequired(), Email()])
username = StringField('Username', validators=[DataRequired()])
first_name = StringField('First Name', validators=[DataRequired()])
last_name = StringField('Last Name', validators=[DataRequired()])
submit = SubmitField('Sign Up')
app/models.py:
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(60), index=True, unique=True)
username = db.Column(db.String(60), index=True, unique=True)
first_name = db.Column(db.String(60), index=True)
last_name = db.Column(db.String(60), index=True)
错误来自 views.py
文件,位于:validate_on_submit()
。我也包含了我的模型和表单代码。我已按照此 中的建议进行操作,但仍然出现相同的错误。
更改此行
form = SignUp
进入这个:
form = SignUp()
您需要像这样实例化 SignUp
表单:
# app/views.py
from .forms import SignUp
from .models import User
@app.route('/signup', methods=["GET", "POST"])
def signup():
form = SignUp() # HERE
if form.validate_on_submit():
...
我正在尝试呈现包含表单的模板并验证表单中的信息。我收到以下错误:
app\views.py", line 47, in signup
if form.validate_on_submit():
TypeError: validate_on_submit() missing 1 required positional argument: 'self'
这是我的代码:
app/views.py:
from .forms import SignUp
from .models import User
@app.route('/signup', methods=["GET", "POST"])
def signup():
form = SignUp
if form.validate_on_submit():
user = User(
email=form.email.data,
username=form.username.data,
first_name=form.first_name.data,
last_name=form.last_name.data
)
db.session.add(user)
db.session.commit()
return 'success'
return render_template('signup.html', form=form)
app/forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.fields.html5 import EmailField
from wtforms.validators import DataRequired, Email
class SignUp(FlaskForm):
email = EmailField('Email', validators=[DataRequired(), Email()])
username = StringField('Username', validators=[DataRequired()])
first_name = StringField('First Name', validators=[DataRequired()])
last_name = StringField('Last Name', validators=[DataRequired()])
submit = SubmitField('Sign Up')
app/models.py:
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(60), index=True, unique=True)
username = db.Column(db.String(60), index=True, unique=True)
first_name = db.Column(db.String(60), index=True)
last_name = db.Column(db.String(60), index=True)
错误来自 views.py
文件,位于:validate_on_submit()
。我也包含了我的模型和表单代码。我已按照此
更改此行
form = SignUp
进入这个:
form = SignUp()
您需要像这样实例化 SignUp
表单:
# app/views.py
from .forms import SignUp
from .models import User
@app.route('/signup', methods=["GET", "POST"])
def signup():
form = SignUp() # HERE
if form.validate_on_submit():
...