Python导入语句返回NoneType
好的,下面是让我今天头疼不已的事情的简化版:
models.py
:
from django.template.defaultfilters import slugify
class MyModel(models.Model):
....
def populate_property(self):
self.property = slugify('string of text')
我的视图调用了 populate_property()
,但是我遇到了一个错误,提示 NoneType object is not callable
。
但是,如果我在代码里直接添加一个 import
来引入 slugify
,那就能正常工作了。
这段代码之前一直能正常运行,所以我现在真的不知道该怎么办。
我的 PYTHONPATH
看起来没问题,环境是用 buildout
创建的。
任何帮助都非常感谢...
3 个回答
0
如果你在使用Django版本低于1.7,我发现这很可能是因为出现了循环导入的问题,这通常是因为你用了import signal
。我总是遇到一些奇怪的情况,比如在本地能正常工作,可能在开发服务器上也能用,但在生产服务器上就不行了……
0
根据你发的代码,应该没有问题。我能想到的唯一可能导致你提到的错误的原因,就是在某个时刻你改变了 slugify
的值。这很可能是你在想用 ==
时不小心用了 =
,或者类似的情况。
检查的最好方法是,保持你其他代码不变,除了现在的导入外,再加上 from django.template import defaultfilters
。然后,把你关注的那行代码改成:
def populate_property(self):
self.property = defaultfilters.slugify('string of text')
如果这样能正常工作,那就试着找找看 slugify
是在哪个地方被重新赋值的。
1
刚刚解决了一个类似的问题,听起来你的代码里有个循环引用(这个文件引入了某个东西,而那个东西又引入了这个文件)。把引入放在populate_property里面是没问题的。