add common validatordef ValidIdentifier(msg = None):     ''' 是否是合法的标识符, 例如site,catalog等'''     @wraps(ValidIdentifier)     def f(v):         pattern = re.compile('^[a-z_]\w*$')         if not pattern.match(v):             raise ValueError(msg or 'invalid identifier')         return True     return f