我正在开发一个简单的Django项目。但是,我对python和Django不太熟悉。它不停地抛出“NameError”。在
在我的模板中,代码如下所示:
{% for habbit_source in habbit_source_list %}
<span class="habbit-hide">{{habbit_source.get_tomato_achieve}}</span>
...
{% endfor %}
get_tomato_achieve
是模型类的函数:task.models.HabbitSource
,其定义如下:
在rules.py
中,我想判断get_tomato_achieve(habbit)
开头的输入参数的类型,但是我是否使用
if type(habbit) == task.models.HabbitSource:
或者
if isinstance(habbit, task.models.HabbitSource):
它将抛出NameError: Name task is not defined.
(当然它是定义的)。这是我的应用程序的名称。)
如果我写from task.models import HabbitSource
,它会抛出ImportError: cannot import HabbitSource
。在
我真的不知道怎么解决这个问题。在
谢谢!在
仅仅因为
task
是应用程序的名称,所以没有理由认为它会在任何特定的模块中定义。Python的名称范围规则非常简单:除非在该模块中导入或分配,否则不会定义任何内容。如果没有定义名称task
的任何内容,则它将保持未定义状态。在至于为什么不能}导入
from task.models import HabbitSource
,您可能有一个循环依赖关系。如果rules
导入models
和{rules
,则在导入时无法解析依赖关系,因此会得到该错误。在一种可能是欺骗并使用内部model name属性,该属性是一个字符串:
或者,您可以重新考虑您的体系结构:类型检查通常不是惯用的Python,通常您只需适当地定义类的方法并调用它们。在
相关问题 更多 >
编程相关推荐