Django temp中的名称错误

2024-09-26 21:57:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个简单的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,其定义如下:

^{pr2}$

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。在

我真的不知道怎么解决这个问题。在

谢谢!在


Tags: 项目djangoimportsourcetaskgetif定义
1条回答
网友
1楼 · 发布于 2024-09-26 21:57:56

仅仅因为task是应用程序的名称,所以没有理由认为它会在任何特定的模块中定义。Python的名称范围规则非常简单:除非在该模块中导入或分配,否则不会定义任何内容。如果没有定义名称task的任何内容,则它将保持未定义状态。在

至于为什么不能from task.models import HabbitSource,您可能有一个循环依赖关系。如果rules导入models和{}导入rules,则在导入时无法解析依赖关系,因此会得到该错误。在

一种可能是欺骗并使用内部model name属性,该属性是一个字符串:

if habbit._meta.object_name == 'HabbitSource':

或者,您可以重新考虑您的体系结构:类型检查通常不是惯用的Python,通常您只需适当地定义类的方法并调用它们。在

相关问题 更多 >

    热门问题