由于导入机制导致的isinstance()和type()等效失败(python/django)

pow*_*wlo 3 python django import types isinstance

在我正在研究的Django项目中,我在视图中导入一个表单,如下所示

#views.py
from forms import SomeForm
Run Code Online (Sandbox Code Playgroud)

然后在我的测试文件中

#form_test.py
from app.forms import SomeForm    
.
.
.
self.assertTrue(isinstance(response.context['form'], SomeForm))
Run Code Online (Sandbox Code Playgroud)

为什么这个实例不起作用?

如果我检查两个对象的type()输出,我得到这个:

response.context form:预期形式:

我可以通过使views.py中的导入机制与form_test.py中的导入机制相匹配来解决这个问题,但这似乎是错误的方法.

供参考,文件结构如下:

  • 现场/
    • manage.py
    • 应用程序/
      • forms.py
      • views.py
      • 测试/
        • form_test.py

ami*_*che 7

isinstance还比较模块位置,response.context['form']类'模块是formsSomeForm模块app.forms你通过分别检查__class__.__module__和 检查这个__module__.

要进行实例工作,您可以:

  • 修复views.py中的导入(推荐)
  • 在form_testse.py中更改sys.path以便能够从表单导入SomeForm导入表单
  • 尝试intrapackage参考