IndexError:字符串索引超出范围 - Django - 为什么?

时间:2013-10-01 12:44:39

标签: python django

我有这个简单的视图功能:

def location(request,locname,lid):
    try: 
       location = Location.objects.get(id=lid)                
       return render_to_response('location.html',{'location':location},context_instance=RequestContext(request))
    except Location.DoesNotExist:     
       return render_to_response('404.html',{},context_instance=RequestContext(request)) #<-- error line

但我只在生产服务器上获得IndexError: string index out of range

错误行在最后一行。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

错误实际发生在try:

的第一行
location = Location.objects.get(id=lid).

然后触发Location.DoesNotExist异常。原因是数据库位置表中不存在.get中使用的位置ID。确保您的生产数据库包含与开发数据库相同的位置数据,包括ID,并且此错误将消失。

答案 1 :(得分:1)

为什么不这样做:

from django.shortcuts import render, get_object_or_404
from your_app.models import Location

def get_location(request, lid):
    location = get_object_or_404(Location, id=lid)
    return render(request, 'location.html', {'location': location})

抛出DoesNotExist异常的原因是因为正在查询的数据库中不存在您正在查找的id,如@hellsgate所提到的那样。