我想创建一个能识别IDN的formencode验证器,在我的一个项目中使用。我使用了Django项目中的一部分代码(http://code.djangoproject.com/svn/django/trunk/django/core/validators.py)但我的代码中一定有一个小错误,我找不到:
class Email(formencode.validators.Email):
def _to_python(self, value, state):
try:
return super(Email, self)._to_python(value, state)
except formencode.Invalid as e:
# Trivial case failed. Try for possible IDN domain-part
print 'heywo !'
if value and u'@' in value:
parts = value.split(u'@')
try:
parts[-1] = parts[-1].encode('idna')
except UnicodeError:
raise e
try:
super(Email, self)._to_python(u'@'.join(parts), state)
except formencode.Invalid as ex:
raise ex
return value
else:
raise e
当我试图验证带有IDN域的电子邮件时(例如:测试@w第一个调用引发的无效异常被抛出,第一个except后面的代码部分永远不会执行('heywo!'从不打印)。在
有一个例子:
^{pr2}$我做错什么了?在
谢谢。在
好吧,找到答案了。我重载了}。该类现在看起来像:
_to_python
,而不是{它工作得很好:)
相关问题 更多 >
编程相关推荐