AttributeError: у объекта 'NoneType' нет атрибута 'find', ошибка кэша - PullRequest
0 голосов
/ 05 июня 2019

В моей локальной среде сервер разработки 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)

У меня импортирован memcache:

from django.core.cache import cache

и в моих settings.py:

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

Я ожидаювеб-страница для работы без ошибок

-------- РЕДАКТИРОВАТЬ: --------------

Предоставление дополнительной информации У меня есть сценарий JSON вмой раздел HTML, который отправляет переменную в Python.Затем python ловит его.

Я повторяю, что все работает локально как шарм.

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

-------- Редактировать новый ------ Я попытался изменить местоположение memcache, чтобы указать в моем "настройках".py ":

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

}

но эта попытка не сработала. Я могу нормально печатать в системный журнал, значения НЕ НУЛЯЮТ

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Ошибка состояла в том, что я не установил memcached в первую очередь; хотя я использовал эту команду для установки:

pip3 install python-memcached

Затем я использовал другую команду:

sudo apt install memcached

и теперь все отлично работает:)

1 голос
/ 05 июня 2019

Я считаю, что cache.get('ratings') не может найти строку «рейтинги», поэтому он возвращает NoneType по умолчанию, поэтому он не может использовать атрибут .find. Вы должны попробовать распечатать кэш, чтобы увидеть, есть ли внутри него рейтинги строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...