当我创建一个新对象时,它会两次插入到 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/