2 回答
TA贡献1806条经验 获得超5个赞
也许您的问题是在文章中的上述代码之前提出的,但现在的实际代码是
'token':account_activation_token.make_token(user),
这将是该make_token
方法的正确调用。使用上面粘贴的代码,调用account_activation_token(user)
会引发一个 `TypeError: 'TokenGenerator' object is not callable 错误。
TA贡献1785条经验 获得超4个赞
您可以使用__call__类上的方法执行此操作:
class TokenGenerator(PasswordResetTokenGenerator):
def make_token(self, user, timestamp):
return (str(user.pk)+str(timestamp)+str(user.is_active))
def __call__(self, user, password):
return self.make_token(user, timestamp)
t = TokenGenerator()
t(someuser, sometimestamp)
# some hash
但是,我并不真的相信您需要这样做,因为您有一个类,其中该make_token方法根本不引用该类中的任何内容。一个函数在这里可以做同样的事情:
generate_token(user, timestamp):
return (str(user.pk)+str(timestamp)+str(user.is_active))
generate_token(someuser, sometimestamp)
# some hash
实际上,他们在文档中使用它的方式是从实例中调用该实例方法,例如:
t = TokenGenerator()
t._make_hash_vlaue(someuser, sometimestamp)
添加回答
举报