Django - 在debug.py列表索引超出范围

我无法弄清楚为什么我会收到这个错误 . 请帮忙 .

Traceback(最近一次调用最后一次):

文件“C:\ Python26 \ lib \ site-packages \ django \ core \ servers \ basehttp.py”,第280行,运行self.result = application(self.environ,self.start_response)

文件"C:\Python26\lib\site-packages\django\core\servers\basehttp.py",第674行,在 call 中返回self.application(environ,start_response)

文件"C:\Python26\lib\site-packages\django\core\handlers\wsgi.py",第241行,在 call response = self.get_response(request)

文件“C:\ Python26 \ lib \ site-packages \ django \ core \ handlers \ base.py”,第142行,在get_response中返回self.handle_uncaught_exception(request,resolver,exc_info)

文件“C:\ Python26 \ lib \ site-packages \ django \ core \ handlers \ base.py”,第166行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)

文件“C:\ Python26 \ lib \ site-packages \ django \ views \ debug.py”,第58行,在technical_500_response中html = reporter.get_traceback_html()

文件“C:\ Python26 \ lib \ site-packages \ django \ views \ debug.py”,第109行,在get_traceback_html frames = self.get_traceback_frames()中

文件“C:\ Python26 \ lib \ site-packages \ django \ views \ debug.py”,第228行,在get_traceback_frames pre_context_lineno,pre_context,context_line,post_context = self._get_lines_from_file(filename,lineno,7,loader,module_name)

文件“C:\ Python26 \ lib \ site-packages \ django \ views \ debug.py”,第209行,在_get_lines_from_file context_line = source [lineno] .strip('\ n')

IndexError:列表索引超出范围

可以是因为使用记事本吗?

回答(4)

2 years ago

我知道这个答案有点晚了但它可以帮助别人:)

在我的情况下,那是因为我没有重新启动apache和旧文件使用和新的冲突(我不知道如何) . 一个简单的apache重启修复了这个问题(我认为优雅也应该工作) .

一般来说,当文件中存在冲突而代码中没有问题时,似乎会发生错误 . 尝试删除pyc文件,重新启动django,apache或当前正在使用python代码的内容 .

这对我有用 .

2 years ago

源文件包含djangos调试页面不支持的Macintosh换行符(\ r) .

https://code.djangoproject.com/ticket/13958#comment:5

2 years ago

这很奇怪 . 获取hexdump实用程序并查看源文件中的字节数 . 也许在文件开头有一个字节顺序标记?

2 years ago

我有一个类似的问题,Stackoverflow上的大多数建议是a)删除* .pyc文件并重启web服务器或b)检查Macintosh换行符(对于Mac用户) .

两者都没有帮助 .

错误结果相当微不足道 . 出于某种原因"DEBUG=True"我在我的httpd日志文件中收到此错误,但是当我更改"DEBUG=False"时,我开始在日志文件中获取实际错误 . 所以至少在我的情况下,这是一个错误的错误,因为你没有看到真正的问题,因为与DEBUG = True / False开关有关 .

简而言之,如果将其设置为True,则尝试 DEBUG=False ,反之亦然 .