mongoengine调用导致django视图被调用两次

时间:2012-09-21 13:12:47

标签: python django mongodb mongoengine

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

我正在使用django 1.4.1和mongoengine 0.7.5

我的删除视图的代码是

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请求,它似乎不是原因

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

1 个答案:

答案 0 :(得分:1)

事实证明问题是由django-debug-toolbar引起的,更具体地说是分析面板,它的钩子会导致所有视图被调用两次。
删除debug_toolbar.panels.profiling.ProfilingDebugPanel面板可解决问题 https://github.com/django-debug-toolbar/django-debug-toolbar/issues/267
这个问题是开发人员所知的,应该在回购中修复。