Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我试图删除对象时,我得到;“超出索引范围的列表”;错误_Python_Django_List_Orm - Fatal编程技术网

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语句…当我在类别详细信息页面上时,如果我试图删除此页面,我会出错。