나는 정상적인 유효성 검사 오류로 오류를 발생시키는 방법과 동일한 상황에 직면했다.
검사기 방법 :
def user_DoesExist(node,appstruct):
if DBSession.query(User).filter_by(username=appstruct['username']).count() > 0:
raise colander.Invalid(node, 'Username already exist.!!')
스키마 :
class UserSchema(CSRFSchema):
username = colander.SchemaNode(colander.String(),
description="Extension of the user")
name = colander.SchemaNode(colander.String(),
description='Full name')
extension = colander.SchemaNode(colander.String(),
description='Extension')
pin = colander.SchemaNode(colander.String(),
description='PIN')
보기 :이 당신을 도울 것입니다
@view_config(route_name='add_user', permission='admin', renderer='add_user.mako')
def add_user(self):
schema = UserSchema(validator = user_DoesExist).bind(request=self.request)
form = deform.Form(schema, action=self.request.route_url('add_user'), buttons=('Add User','Cancel'))
if 'Cancel' in self.request.params:
return HTTPFound(location = self.request.route_url('home'))
if 'Add_User' in self.request.params:
appstruct = None
try:
appstruct = form.validate(self.request.POST.items())
except deform.ValidationFailure, e:
log.exception('in form validated')
return {'form':e.render()}
희망. 감사합니다. .
이것은 사후 처리가 아니며 일반적인 인증 프로세스입니다. 내가 뭘하고 싶은지는'appstruct = form.validate (self.request.POST.items())'줄 뒤에 뭔가 잘못 될 때보고 오류입니다. –