1

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

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只在生产服务器上。

错误行在最后一行。

我在这里做错了什么?

4

2 回答 2

1

该错误实际上发生在您的try:块的第一行

location = Location.objects.get(id=lid).

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

于 2013-10-01T13:03:31.390 回答
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是因为@hellsgate 提到的正在查询的数据库中不存在您要查找的 id。

于 2013-10-01T13:05:26.467 回答