0

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')]}
4

1 回答 1

0

正确的语法:

formvalidator =  RegistrationSchema()
valid = formvalidator.to_python(request.POST)
于 2014-06-24T21:10:00.533 回答