我正在编写一个标准化gmail电子邮件地址的函数,并将其转换为:
david.New+1234@gmail.com ==> davidnew@gmail.com
例如,某人可以从一个Gmail帐户进行多次注册。我当前的函数在models.py
中,如下所示:
def normalize_email(email):
"""
Make sure people cannot register variations of the same email address
"""
email = email.lower()
name, domain = email.split('@')
name = name.replace('.', '').split('+')[0]
email = name + '@' + domain
return email
此功能仅由User
模型调用,所以我的问题是此功能/方法应在哪里“最佳使用”?例如:
1)在用户模型中,作为常规方法:
class User(models.Model):
[fields here...]
def normalize_email(self, email):
...
2)在用户模型中作为类方法
class User(models.Model):
[fields here...]
@classmethod
def normalize_email(cls, email):
...
3)在用户模型中作为静态方法
class User(models.Model):
[fields here...]
@staticmethod
def normalize_email(email):
...
4)在用户ModelManager中:
class User(models.Model):
[fields here...]
objects = UserManager()
5)除了在models.py文件中之外,所有内容均作为常规函数。
def normalize_email(email):
...
class User(models.Model):
[fields here...]
以上哪一项有意义,哪些没有? (例如,为什么我们不想使用上面的选择X,但是选择Y或Z才有意义)。