python - mongoengine 调用导致 django View 被调用两次

标签 python django mongodb mongoengine

当我创建一个新对象时,它会两次插入到 mongodb 中,
当我尝试删除一个时,它会这样做,然后再试一次,只是告诉我它找不到对象
它可能在查询太难时做同样的事情现在这不是真正的问题

我正在使用带有 mongoengine 0.7.5 的 django 1.4.1

我的删除 View 的代码是

def delbadge(request, oid):
    log.info('searching')
    try:
        badg = BgBadge.objects(id=oid)[0]
    except:
        log.error('not found')
        raise Http404
    badg.delete()
    log.info('deleted')
    return HttpResponseRedirect('/badge/')
    #raise Http404

它给我的是

searching
deleted
searching
not found

如果我删除 badg.delete() 我得到

searching
deleted

当我将 return HttpResponseRedirect('/badge/') 替换为 raise Http404

时,情况相同

所以我测试了 django 的 mongoengine 代码和没有 mongoengine 的 django 代码,它们都工作得很好

编辑:
/badge/ 的处理程序是 url(r'^badge/$', AllBadges.as_view()),
我检查了 http 请求,这似乎不是原因

更新:
我在另一台计算机上尝试并得到相同的行为

最佳答案

事实证明问题是由 django-debug-toolbar 引起的,更具体地说是分析面板的钩子(Hook)导致所有 View 被调用两次。
删除 debug_toolbar.panels.profiling.ProfilingDebugPanel 面板可以解决问题。
https://github.com/django-debug-toolbar/django-debug-toolbar/issues/267
该问题已为开发人员所知,应该会在 repo 协议(protocol)中得到修复。

关于python - mongoengine 调用导致 django View 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12531302/

相关文章:

python - Numpy:使用池多重处理矩阵乘法

python - 获取 Django 模型的主要字段的名称

javascript - MongoDB采集方式和数据库命令有哪些性能差异

mongodb - 由于 BSONSize 无效,mongorestore 失败

python - 如何使用 torch 从 caffe 模型中获取图层

python - 向我解释尾调用优化有什么大不了的,为什么 Python 需要它

python - 如何在Python中使用def和参数

python - 如何使特定模型类的 Django contrib Admin 更改列表可编辑,并包含列表中显示的相关项目的下拉列表?

python - Django+Apache ModuleNotFoundError : No module named 'myproject' 错误

node.js - find() 和游标问题 : . toArray 与cursor.forEach 方法显示不同的结果和错误 "Can' 发送后设置 header 。”