2014-06-24 3 views
0

파이썬 초급. 피라미드 1.5.1. 이 시점에서 필자는 앱을 기능적으로 작동 시키려고합니다.formencode가있는 스키마로 제출 된 양식의 유효성을 어떻게 검사합니까?

기본적으로 양식을 하드 코딩하고 유효성 검사에 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, 
    } 

POST :

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

답변

0

올바른 구문 :

formvalidator = RegistrationSchema() 
valid = formvalidator.to_python(request.POST)