我为我的ndb stringProperties推出了一个自定义验证程序,以清除我网站的恶意代码。
def stringValidator(prop, value):
lowerValue = value.lower()
stripped = str(utils.escape(lowerValue))
if stripped != lowerValue:
raise datastore_errors.BadValueError(prop)
return stripped
在其他地方,我正在捕获该错误并将失败返回给客户端。我希望能够返回验证失败的属性类型。
except datastore_errors.BadValueError as err:
如果我print(err)
我得到了:
StringProperty('email', validator=<function stringValidator at 0x1079e11b8>)
我看到这个StringProperty包含我想要返回的属性的名称:'email'
。我该如何提取它?
str(err.args[0])
答案 0 :(得分:3)
您可以按_name
属性获取该属性的名称。
from google.appengine.ext import ndb
def stringValidator(prop, value):
lowerValue = value.lower()
stripped = 'bla'
if stripped != lowerValue:
raise datastore_errors.BadValueError(prop._name)
return stripped
class Foo(ndb.Model):
email = ndb.StringProperty(validator=stringValidator)
Foo(email='blas') # raises BadValueError: email
更新:您还可以使用&#34;人性化的&#34;属性名称通过设置
email = ndb.StringProperty(validator=stringValidator, verbose_name='E-mail')
在属性定义中,然后通过_verbose_name
属性获取它。