Python 当我试图删除对象时,我得到;“超出索引范围的列表”;错误
这是我的“删除”类别功能:Python 当我试图删除对象时,我得到;“超出索引范围的列表”;错误,python,django,list,orm,Python,Django,List,Orm,这是我的“删除”类别功能: def delete_category(request, id): user = request.user category = Category.objects.get(pk=id) category.user.remove(user) return HttpResponseRedirect(reverse('auth_profile', args=[user.username])) 这是我的分类详细信息功能: def catego
def delete_category(request, id):
user = request.user
category = Category.objects.get(pk=id)
category.user.remove(user)
return HttpResponseRedirect(reverse('auth_profile', args=[user.username]))
这是我的分类详细信息功能:
def category_detail(request, category_name):
user = request.user
category = Category.objects.filter(name=category_name, user__username=user)[0]
return render_to_response("category_detail.html", { "category":category}, context_instance=RequestContext(request))
这是category_detail.html:
<p>{{category.name}}</p>
<a href="{% url 'delete_category' category.id %}">delete</a>
{{category.name}
如果我有多个类别,我可以在单击“删除”链接时删除。但如果我只有一个类别,则会出现以下错误:
列表索引超出范围
您的代码有点难以理解,我怀疑这不是确切的代码,但没关系
列表索引超出范围是指您指定的…[0]
您可能想重写您所拥有的,以更好地处理零类别,但快速修复方法是:
try:
category = Category.objects.filter(name=category_name, user__username=user)[0]
except:
category = None
...
你的代码有点难理解,我怀疑这不是确切的代码,但没关系 列表索引超出范围是指您指定的
…[0]
您可能想重写您所拥有的,以更好地处理零类别,但快速修复方法是:
try:
category = Category.objects.filter(name=category_name, user__username=user)[0]
except:
category = None
...
改变
category = Category.objects.filter(name=category_name, user__username=user)[0]
借
另请参见如何正确使用QuerySet对象
category = Category.objects.filter(name=category_name, user__username=user)[0]
借
另请参见如何正确使用QuerySet对象您将delete_category函数放在了哪里?为了您将来的理智起见,不要允许
GET
请求修改您的数据库!那样会产生可怕的副作用。看见也就是说,您是如何链接到您的类别\u详细信息
视图的?另外,你能再核对一下你的密码吗?目前,view函数接受一个参数shelf\u name
,但引用一个未声明的变量category\u name
。假设这不是一个实际的错误,如果用户和类别名称对与对象不匹配,该视图将引发该异常。非常感谢,我会更加小心您将delete_category函数放在哪里了?为了您将来的理智起见,不要允许GET
请求修改您的数据库!那样会产生可怕的副作用。看见也就是说,您是如何链接到您的类别\u详细信息
视图的?另外,你能再核对一下你的密码吗?目前,view函数接受一个参数shelf\u name
,但引用一个未声明的变量category\u name
。假设这不是一个实际的错误,如果用户和类别名称对与对象不匹配,该视图将抛出该异常。非常感谢,我会更加小心,现在我得到了相反的“删除类别”,参数“(“”),”和关键字参数“{}”。我很困惑。这很疯狂,因为如果我有多个类别,我可以删除,但如果我只有一个类别,我会出错。您需要重写代码,以便更好地处理一个或零个类别,但没有传入任何类别的情况,您会得到{%url'delete\u category%}
…您应该用模板语言编写一个if语句…当我在类别详细信息页面上时,如果我试图删除此页面,则会出现错误。现在,我得到的“delete\u category”的相反结果是,未找到参数“(“”,)”和关键字参数“{}”。我很困惑。这很疯狂,因为如果我有多个类别,我可以删除,但如果我只有一个类别,我会出错。您需要重写代码,以便更好地处理一个或零个类别,但没有传入任何类别的情况,您会得到{%url'delete\u category%}
…您应该用模板语言编写if语句…当我在类别详细信息页面上时,如果我试图删除此页面,我会出错。