Django Debug "IndexError: список индексов вне диапазона" - PullRequest
0 голосов
/ 22 декабря 2011

Я работаю над проектом django некоторое время, и внезапно отладка django перестала работать, отображая следующее исключение вместо отображения трассировки ошибки в моем коде.

Похоже, это исключениепроблема в самом отладчике и обсуждалась в нескольких местах, указывая на то, что это может быть проблема с разрывом строк в Mac ( здесь ) и несоответствием строк в стеке и коде на диске (здесь ).

Интересно, что это исключение возникает только тогда, когда есть исключение, которое НЕ связано с синтаксической ошибкой.Если я случайно добавлю неправильный синтаксис, django покажет обычный интерфейс отладки, указывающий «неверный синтаксис (views.py, line xyz)».

Я использую Django 1.3, Python 2.7, Ubuntu 11.04.Проект состоит из нескольких тысяч строк, поэтому было бы сложно скопировать и вставить его сюда.

Кто-нибудь тоже сталкивался с этим и знает, какие другие факторы могут вызвать это и как это исправить?

Traceback (most recent call last):

 File "/usr/local/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 283, in run
  self.result = application(self.environ, self.start_response)

 File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
  return self.application(environ, start_response)

 File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 273, in __call__
  response = self.get_response(request)

 File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 169, in get_response
  response = self.handle_uncaught_exception(request, resolver, sys.exc_info())

 File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
  return debug.technical_500_response(request, *exc_info)

 File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 59, in technical_500_response
  html = reporter.get_traceback_html()

 File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 114, in get_traceback_html
  frames = self.get_traceback_frames()

 File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 242, in get_traceback_frames
  pre_context_lineno, pre_context, context_line, post_context = self._get_lines_from_file(filename, lineno, 7, loader, module_name)

 File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 223, in _get_lines_from_file
  context_line = source[lineno].strip('\n')

 IndexError: list index out of range

Ответы [ 2 ]

0 голосов
/ 27 сентября 2012

У меня была эта проблема, потому что я не перезагружал / перезагружал сервер HTTP, даже после touch использования файла wsgi.py в моем приложении.

Я запускаю Django / WSGI в режиме демона.

Я исправил это, перезагрузив веб-сервер:

Apache:

"systemd" Linux-дистрибутивы:

# systemctl reload httpd.service

Большинство дистрибутивов:

# apachectl -k graceful

Я знаю, что это может быть не та проблема, с которой вы столкнулись, но это может помочь другим.

0 голосов
/ 23 декабря 2011

Я не смог найти решение проблемы, но я нашел способ, по крайней мере, получить более информативные трассировки, просто используя другой отладчик.

Перейдите сюда: https://github.com/dcramer/django-devserver

-выполнить pip-установку на devserver

-a pip-установку werkzeug

-адд-dev-сервера для ваших приложений в settings.py

- запустить django с помощью ./manage.py runserver --werkzeug

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