Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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_Exception - Fatal编程技术网

Python 四处走动

Python 四处走动,python,django,list,exception,Python,Django,List,Exception,我的代码如下: for p in qs: set = None try: set = p.property.property_locations.all() except IndexError: pass if set: 问题是,当set为none时,它仍然会从django.db.models.query的这部分抛出indexer-ror: try: qs = self._clone() qs.query.set

我的代码如下:

for p in qs:
    set = None
    try:
        set = p.property.property_locations.all()
    except IndexError:
        pass

    if set:
问题是,当set为none时,它仍然会从django.db.models.query的这部分抛出indexer-ror:

try:
    qs = self._clone()
    qs.query.set_limits(k, k + 1)
    return list(qs)[0] 
except self.model.DoesNotExist, e:
    raise IndexError(e.args)

如何阻止系统抛出此错误并继续执行for循环中的下一个元素?

在任何情况下,代码中都有两个错误:

  • set是一个内置的(从SO的语法突出显示中可以看出),因此,通过给变量起这个名称,您是在毫无目的地隐藏内置的,这至少是一种不好的做法,并且可能会在以后的代码中引起问题
  • 检查set是否为None的标准方法是:if set not None
  • 更好的是,编写代码片段的规范方法是:

    try:
        [code that might raise an exception]
    except Error:
        [code that handles the exception]
    else:
        [code that executes when no exception was raised]
    
    (当然,用错误代替实际异常)


    这样,您甚至不必在该点检查“set”。

    将set重命名为其他名称时是否有效?set是一个内置函数,“当set为none时”?您正在将
    set
    设置为
    None
    。它必须始终为
    None
    。你的问题是什么?你到底有什么问题?将
    QuerySet
    对象分配给
    set
    永远不会引发
    索引器。你能说得更精确一点吗?原来错误是由一些.pyc文件没有更新引起的。@moutone:原来你应该结束这个问题。如果代码与实际问题(或实际解决方案)无关,最好删除该问题。