class UserParams(params.ParamSet): id = params.UUIDStringField( required=True) name = params.WordField( 'name should be a 1~8 length string, and is required', required=True, length=(1, 8)) email = params.EmailField( 'email should be a valid email format, and is required', required=True) age = params.IntegerField( 'age should be a 10~30 int', min=10, max=30) is_staff = params.BooleanField(default=True) is_admin = params.BooleanField() def validate_name(self, value): if value not in userdb: raise ValueError('user not in db') return value def validate_name_with_email(self): """name must be in email""" name = self.data.get('name') email = self.data.get('email') if not name or not email: return if name not in email: raise ValueError('name must be in email')
class ContactsInfoView(JSONView): @use_params_class_view({ 'id': params.IntegerField(required=True), }) def get(self, request): c = contact_api.get(id=request.params.id) return self.json_response(make_resp_data(c), encoder=contact_encoder)
class GetHandler(BaseHandler): @use_params({ 'a': params.IntegerField(required=True), }) def get(self): print('params', self.params) if self.params.a != 1: raise params.InvalidParams('a != 1') return self.write(str(self.params))
class RegisterHandler(BaseHandler): @use_params({ 'hostname': params.StringField(required=True), 'ip_addr': IPField(required=True), 'mac_addr': mac_field.spawn(required=True), 'ts': params.IntegerField(required=True), }) def post(self): print self.params.hostname print self.params.ip_addr print self.params.mac_addr print self.params.ts self.write_json(self.params.data)
class PostJsonHandler(BaseHandler): @use_params( { 'a': params.IntegerField(required=True), 'b': params.Field(), }, is_json=True) def post(self): print('params', self.params) if self.params.a != 1: raise params.InvalidParams('a != 1') if self.params.b and self.params.b != 'b': raise params.InvalidParams('b != b') return self.write(str(self.params))
class PostParams(params.ParamSet): a = params.IntegerField(required=True) b = params.Field()
class PaginatorParams(params.ParamSet): page = params.IntegerField(default=1, null=False) limit = params.IntegerField(default=20, min=1, max=500, null=False) sort = params.WordField(choices=['created_at', 'updated_at'], default='updated_at') order = params.WordField(choices=['asc', 'desc'], default='desc')