当Django返回有用的消息时,为什么这个验证器返回None?

时间:2014-04-25 17:04:03

标签: python django

以下是Validator的代码,为什么要打印None None?相同的代码位于django 1.6

In [1]: %paste
class SVNPathValidator(object):
    message = 'Enter a valid value.'
    code = 'invalid'

    def __init__(self, verify_existed=True, message=None, code=None, path_type=0, rev=None):
        '''
            file_type:
                0 file
                1 dir
        '''
        if message is None:
            self.message = message
        if code is None:
            self.code = code
        print self.message, self.code
        self.path_type = path_type  
        self.rev = rev 

    def __call__(self, value):
        print self.message, self.code
## -- End pasted text --

In [2]: validator=SVNPathValidator()
None None

In [3]: validator('svn://10.10.10.10/repo')
None None

2 个答案:

答案 0 :(得分:0)

我不确定你为什么认为它会做任何其他事情。在实例化对象时,您不会传递消息或代码,也不会在__call__方法中设置它们。

代码与您链接到的Django代码相同。相反,所有Django版本都与您的代码相反:if self.message is not None等。

答案 1 :(得分:0)

你的代码的功能是将这两个变量设置为None - 尽管我认为它不是故意的。

def __init__(self, verify_existed=True, message=None, code=None, path_type=0, rev=None):
    if message is None:
        self.message = message
    if code is None:
        self.code = code

首先检查参数是否为None,如果是,则将它们指定为实例变量。 <{1}}或self.message无处分配给其他任何内容。