Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最佳实践:我应该在哪里用Django编写函数(而不是方法)?_Django_Django Models - Fatal编程技术网

最佳实践:我应该在哪里用Django编写函数(而不是方法)?

最佳实践:我应该在哪里用Django编写函数(而不是方法)?,django,django-models,Django,Django Models,这也许不是一个基本的问题,但我很好奇,我自己也问了很久 Django代码的一部分是函数,与Django模型没有直接关系。 让我们以该函数为例: def make_random_raw_password(length=8): # Do some stuff and return a 8 char randomised string 从技术上讲,此函数与用户类无关,但从功能上讲,它与用户类无关 你会在哪里写这个函数? 从初学者的角度来看,我至少可以看到两种选择: 我创建一个包含所有这些函数

这也许不是一个基本的问题,但我很好奇,我自己也问了很久

Django代码的一部分是函数,与Django模型没有直接关系。 让我们以该函数为例:

def make_random_raw_password(length=8):
    # Do some stuff and return a 8 char randomised string
从技术上讲,此函数与用户类无关,但从功能上讲,它与用户类无关

你会在哪里写这个函数? 从初学者的角度来看,我至少可以看到两种选择:

  • 我创建一个包含所有这些函数的
    myutils.py
    文件,然后在
    models.py
    /
    view.py
    等文件中导入
    myutils.py
    ,以使用这些函数

  • 我将此函数作为UserProxy类中的classmethod移动(因为我不能直接修改Django中的用户类方法),这使我接近:

  • -


    你会用哪一个?你能解释一下原因吗?提前感谢。

    切题说明:您可以使用自定义用户模型进行身份验证。否则,您的问题似乎与堆栈溢出无关。实际上我已经这样做了,但我有几个模型继承自
    User
    类(
    BusinessUserProfile
    ClientUserProfile
    )。为了保持干燥,我不能在所有xxxUserProfile方法中编写方法。因为这种方法用于模型,所以我通常将其放在models.py中。以及我在应用程序的utils.py中放入的模型中未使用的方法。
    class UserProxy(User):
        class Meta(object):
            proxy = True
    
        @classmethod
        def make_random_raw_password(cls, length=8):
            # Do some stuff...