在Django项目中哪里写函数/方法

时间:2018-09-29 21:57:13

标签: python django django-models

我正在编写一个标准化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才有意义)。

0 个答案:

没有答案