Как вы проверяете отправленную форму с помощью схемы с 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)