Python 索引器错误:字符串索引超出范围-Django-为什么?

Python 索引器错误:字符串索引超出范围-Django-为什么?,python,django,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 Locat

我有一个简单的查看功能:

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
def位置(请求、locname、lid):
尝试:
location=location.objects.get(id=lid)
返回render_to_response('location.html',{'location':location},context_instance=RequestContext(请求))
除Location.DoesNotExist外:

返回render_to_response('404.html',{},context_instance=RequestContext(request))#错误实际上发生在
try:
块的第一行

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

为什么不直接执行以下操作:

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所述。

嘿,布兰登,谢谢,这看起来很酷。使用上下文实例呈现到上下文实例的响应与使用请求呈现的响应之间有什么区别?虽然这是更好的方法,但没有解释为什么会发生错误render会自动为您创建上下文实例。