AttributeError:“ NoneType”对象没有属性“ find”,缓存错误

时间:2019-06-05 02:30:45

标签: python django memcached

在我的本地环境中,django开发服务器运行正常,没有错误。

当我在具有Nginx和Gunicorn的生产环境中运行应用程序时,出现此错误:

AttributeError: 'NoneType' object has no attribute 'find'

这是错误的来源:

if cache.get('ratings').find(name_input) == -1:
    result = food.objects.get(name = name_input)

我导入了内存缓存:

from django.core.cache import cache

并在我的settings.py中:

CACHES = {
   'default': {
       'BACKEND':   
       'django.core.cache.backends.memcached.MemcachedCache',                                                                                                                                                                                                                                                   
        'LOCATION': '127.0.0.1:11211',
    }
}

我希望该网页能够正常运行

--------编辑:--------------

提供更多信息我的HTML部分中有一个JSON脚本,它将变量发送到python。 然后python抓住了它。

我再说一遍,一切在本地都像魅力一样。

==================================

--------编辑新文件------ 我试图将memcache的位置更改为指向“ settings.py”中的服务器:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'MY_IP:11211',
}

}

但是这种尝试没有用 我可以正常打印到系统日志,值不为空

2 个答案:

答案 0 :(得分:1)

我相信cache.get('ratings')无法找到字符串“ ratings”,因此默认情况下它返回NoneType,因此它无法使用.find属性。 您应该尝试打印缓存以查看其中是否有字符串评级

答案 1 :(得分:1)

错误是我没有首先安装memcached。即使我使用此命令来安装它:

pip3 install python-memcached

然后我改用另一个命令:

sudo apt install memcached

现在一切正常:)