2014-11-28 2 views
3

Итак, у меня есть проект Django, который не использует базу данных (параметр« DATABASES »закомментирован). Я решил использовать Django, так как в будущем мне понадобятся функции базы данных. Во всяком случае, я работаю над проектом tbhis в течение нескольких месяцев без проблем. Я использую Linux Mint и не имел проблем с использованием команды python manage.py runserver.Проект Django ищет «атрибут» _session_cache »

Ну, сегодня я запустил приложение и без проблем начал локальный сервер. Затем я попытался открыть приложение в браузере и получил сообщение, а отвратительное об ошибке:

Traceback (most recent call last): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 170, in _get_session 
    return self._session_cache 
AttributeError: 'SessionStore' object has no attribute '_session_cache' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/core/handlers/base.py", line 87, in get_response 
    response = middleware_method(request) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/middleware.py", line 34, in process_request 
    if user and hasattr(user, 'get_session_auth_hash'): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/utils/functional.py", line 224, in inner 
    self._setup() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/utils/functional.py", line 357, in _setup 
    self._wrapped = self._setupfunc() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/middleware.py", line 23, in <lambda> 
    request.user = SimpleLazyObject(lambda: get_user(request)) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/middleware.py", line 11, in get_user 
    request._cached_user = auth.get_user(request) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/__init__.py", line 151, in get_user 
    user_id = request.session[SESSION_KEY] 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 49, in __getitem__ 
    return self._session[key] 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 175, in _get_session 
    self._session_cache = self.load() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/db.py", line 21, in load 
    expire_date__gt=timezone.now() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/manager.py", line 92, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 351, in get 
    num = len(clone) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 122, in __len__ 
    self._fetch_all() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 966, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 265, in iterator 
    for row in compiler.results_iter(): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 700, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 775, in execute_sql 
    sql, params = self.as_sql() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 100, in as_sql 
    out_cols, s_params = self.get_columns(with_col_aliases) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 246, in get_columns 
    col_aliases) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 328, in get_default_columns 
    r = '%s.%s' % (qn(alias), qn2(column)) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 62, in __call__ 
    r = self.connection.ops.quote_name(name) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/backends/dummy/base.py", line 18, in complain 
    raise ImproperlyConfigured("settings.DATABASES is improperly configured. " 
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 170, in _get_session 
    return self._session_cache 
AttributeError: 'SessionStore' object has no attribute '_session_cache' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/usr/lib/python3.3/wsgiref/handlers.py", line 137, in run 
    self.result = application(self.environ, self.start_response) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/staticfiles/handlers.py", line 64, in __call__ 
    return self.application(environ, start_response) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/core/handlers/wsgi.py", line 187, in __call__ 
    response = self.get_response(request) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/core/handlers/base.py", line 199, in get_response 
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/core/handlers/base.py", line 236, in handle_uncaught_exception 
    return debug.technical_500_response(request, *exc_info) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 91, in technical_500_response 
    html = reporter.get_traceback_html() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 349, in get_traceback_html 
    c = Context(self.get_traceback_data(), use_l10n=False) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 307, in get_traceback_data 
    frames = self.get_traceback_frames() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 465, in get_traceback_frames 
    'vars': self.filter.get_traceback_frame_variables(self.request, tb.tb_frame), 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 232, in get_traceback_frame_variables 
    cleansed[name] = self.cleanse_special_types(request, value) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/views/debug.py", line 187, in cleanse_special_types 
    if isinstance(value, HttpRequest): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/utils/functional.py", line 224, in inner 
    self._setup() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/utils/functional.py", line 357, in _setup 
    self._wrapped = self._setupfunc() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/middleware.py", line 23, in <lambda> 
    request.user = SimpleLazyObject(lambda: get_user(request)) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/middleware.py", line 11, in get_user 
    request._cached_user = auth.get_user(request) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/auth/__init__.py", line 151, in get_user 
    user_id = request.session[SESSION_KEY] 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 49, in __getitem__ 
    return self._session[key] 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/base.py", line 175, in _get_session 
    self._session_cache = self.load() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/contrib/sessions/backends/db.py", line 21, in load 
    expire_date__gt=timezone.now() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/manager.py", line 92, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 351, in get 
    num = len(clone) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 122, in __len__ 
    self._fetch_all() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 966, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/query.py", line 265, in iterator 
    for row in compiler.results_iter(): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 700, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 775, in execute_sql 
    sql, params = self.as_sql() 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 100, in as_sql 
    out_cols, s_params = self.get_columns(with_col_aliases) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 246, in get_columns 
    col_aliases) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 328, in get_default_columns 
    r = '%s.%s' % (qn(alias), qn2(column)) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/models/sql/compiler.py", line 62, in __call__ 
    r = self.connection.ops.quote_name(name) 
    File "/home/peter/.virtualenvs/vis_it/lib/python3.3/site-packages/django/db/backends/dummy/base.py", line 18, in complain 
    raise ImproperlyConfigured("settings.DATABASES is improperly configured. " 
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 
[28/Nov/2014 13:18:54] "GET/HTTP/1.1" 500 59 

Я не прикасался приложение, так как я в последний раз работал над ним, и он работает нормально, то. Я действительно не знаю, о чем это говорит, поскольку у меня нет кэшей, и я не использую базу данных ... Я спросил несколько колледжей, которые знакомы с Django и понятия не имею, что это такое. Есть идеи? Я также пробовал устанавливать DATABASES на пустой dict {} по совету сообщения в Интернете, но не имеет никакого эффекта. Похоже на потерю.

EDIT: Думаю, я должен упомянуть, что с тех пор, как я последний раз касался этого проекта, с тех пор я начал и создал новый проект Django, который использует базу данных. Возможно ли, что этот проект каким-то образом кэширован и разрушает тот, над которым я сейчас пытаюсь работать?

EDIT2: Я должен указать, что этот webapp в настоящее время работает и работает на http://mrcagney-maps.com. Код точно такой же (не трогая его, так как я последний раз нажимаю на сервер). Очень странно.

ответ

3

Ошибка AttributeError: 'SessionStore' object has no attribute '_session_cache' может произойти из базы данных, не имеющей таблицу django_session. Однако, поскольку вы не используете таблицу, вам нужно убедиться, что у вас нет 'django.contrib.sessions.middleware.SessionMiddleware' в вашем MIDDLEWARE_CLASSES в файле настроек проекта. Если он там, он будет искать таблицу базы данных, в которой хранятся сеансы, что приведет к вышеуказанной ошибке.

+0

Эй, спасибо за это. Я дам это в понедельник, когда вернусь к своей машине, но у меня возникло ощущение, что я пробовал это и получил другую ошибку в отношении недостающего промежуточного программного обеспечения (хотя я не использую сеансы). Странно, что это приложение в настоящее время работает на реальном сервере отлично, как с настройкой DATABASES, так и с включенным классом промежуточного программного обеспечения. Очень странно. Я не понимаю, как он когда-либо работал в Интернете ... но это было и в настоящее время ... – user3908739

+1

UPDATE: Хорошо, что вы были правы в отношении промежуточного программного обеспечения. Для того, чтобы заставить его работать снова я должен был удалить следующее: «django.contrib.sessions.middleware.SessionMiddleware» «django.contrib.auth.middleware.AuthenticationMiddleware» «django.contrib.auth.middleware.SessionAuthenticationMiddleware» 'django.contrib.messages.middleware.MessageMiddleware' Не знаю, почему они были там, чтобы быть честными. Вероятно, оставшийся от предыдущего проекта, я основывал его – user3908739

+0

Я также до сих пор не понимаю, почему включение их не нарушало версию на реальном сервере, а выполнялось на моей локальной машине. Я думаю, что это имеет какое-то отношение к Django's python manage.py. Команда запускает кеширование чего-то между проектами. Проект, над которым я работал ранее, имеет аутентификацию пользователя и сеансы и т. Д., И я считаю, что некоторые остатки работы этого приложения локально ломают мое другое приложение. Что-то вроде кэширования пользователя локально, и он все еще искал этого пользователя/сеанса при переключении приложений. Это все, о чем я могу думать. Так или иначе. Теперь он работает, поэтому я принял ваш ответ. Приветствия. – user3908739