我有这个简单的视图功能:
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
。
错误行在最后一行。
我在这里做错了什么?
答案 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所提到的那样。