Как вы проверяете отправленную форму с помощью схемы с formencode?

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

Я в основном жестко программирую свои формы и просто пытаюсь использовать formencode для проверки.

Я просто пытаюсь определить схему, создать экземпляр валидатора и проверить отправленную форму. Я был в этом довольно давно, и я не могу найти пример где-либо в Интернете, включая веб-сайт проекта.

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

Ошибка:

AttributeError: 'SimpleFormValidator' object has no attribute 'validate'

Код:

class RegistrationSchema(formencode.Schema):
    allow_extra_fields = True
    password = formencode.validators.PlainText(not_empty=True)
    email = formencode.validators.Email(resolve_domain=False)
    password = formencode.validators.String(not_empty=True)


@view_config(permission='view', route_name='register',
             renderer='templates/user_add.pt')
def user_add(request):

    pprint (vars(request.POST))

    formvalidator =  SimpleFormValidator(RegistrationSchema)

    if 'form.submitted' in request.POST and formvalidator.validate():
        session = DBSession()
        email = form.data['email']
        user = User(
            password=form.data['password'],
            email=form.data['email']
        )
        session.add(user)

        headers = remember(request, email)

        redirect_url = request.route_url('main')

        return HTTPFound(location=redirect_url, headers=headers)

    login_form = login_form_view(request)
    logged_in = authenticated_userid(request)

    return {
        'logged_in': logged_in,
        'login_form': login_form,
    }

СООБЩЕНИЕ:

{'reason': 'Not a form request'}
{'_items': [('_csrf', '208f4c5344cf87fbbe2f79afde7d879b4e3ab7f5'),
            ('email', 'jeremy@test.com'),
            ('password', 'test'),
            ('submit', 'Log In')]}

1 ответ

Правильный синтаксис:

formvalidator =  RegistrationSchema()
valid = formvalidator.to_python(request.POST)
Другие вопросы по тегам