form.validate_on_submit () отсутствует 1 обязательный позиционный аргумент: 'self' - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в веб-разработке колб, я пытаюсь создать шаблон, содержащий форму, и проверить информацию из формы.Я получаю следующую ошибку

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)

ошибка из файла представлений по адресу: validate_on_submit (), я также включил код моих моделей и форм.Я сделал так, как рекомендовано в этом посте Проверка TypeError при отправке пропущен необходимый позиционный аргумент , но я все еще получаю ту же ошибку

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вам нужно создать экземпляр 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():
    ...
0 голосов
/ 19 декабря 2018

Измените эту строку

    form = SignUp

на эту:

    form = SignUp()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...