覆盖 Django 模块类方法

asy*_*ige 3 python django

在我的 Django 应用程序中,我通过pip. 我需要覆盖位于site-packages/module/views.py. 我假设,我需要在我的自定义模块目录中导入这个模块,并简单地继承类和覆盖方法。

最好的方法是什么?如何在不在site-packages目录中编写代码的情况下正确执行此操作?

Cia*_*man 6

您所追求的通常称为猴子修补

import some_module

def my_method(self):
   pass

some_module.SomeClass.a_method = my_method
Run Code Online (Sandbox Code Playgroud)

但是要小心,根据方法和库初始化的性质,修补方法可能为时已晚。例如,如果您想要修补的方法在模块加载时被调用,您将永远无法在它被调用之前修补它。

在应用程序启动时尽早尝试修补有问题的类