为什么我的Django视图在每个页面视图中被击中两次?

时间:2010-10-29 21:24:27

标签: django django-views

我似乎无法为我的生活找到问题。很简单,我有一个数据库对象,我从数据库中提取,将它的“视图”递增一个,然后保存。我的视图显示增加的值,但随后我的日志显示该值会再次增加。

g=Game.objects.filter(slug=slug).distinct()[0]
g.views += 1
g.save()

这是我的日志:

[Fri Oct 29 15:15:49 2010] [error] DEBUG:root:Updating plays
[Fri Oct 29 15:15:49 2010] [error] DEBUG:root:plays: 40
[Fri Oct 29 15:15:50 2010] [error] DEBUG:root:Updating plays
[Fri Oct 29 15:15:50 2010] [error] DEBUG:root:plays: 41

我的观点显示它有40次点击。这导致每次刷新时我的视图增加2:

[Fri Oct 29 15:20:19 2010] [error] DEBUG:root:Updating plays 
[Fri Oct 29 15:20:19 2010] [error] DEBUG:root:plays: 42
[Fri Oct 29 15:20:19 2010] [error] DEBUG:root:Updating plays
[Fri Oct 29 15:20:19 2010] [error] DEBUG:root:plays: 43

有关这可能是什么的任何提示?

编辑:

这是我的看法。我把它简化为核心元素(它仍然表现得很奇怪)。

def game(request, slug=None):

    g=Game.objects.filter(slug=slug)[0]

    if g:
        comments=GameComment.objects.filter(item=g, parent__isnull=True)
        g.plays+=1
        g.save()
    else:
        comments=None

    return render_to_response('goto/goto_game.html', {'g': g, 'comments':comments, 'cCount':len(comments) if comments else 0, 'newCCount':0}, request=request)

3 个答案:

答案 0 :(得分:3)

AH!原来这是一个丢失的网址和ajax问题。它不是favicon,因为它只触及根,而不是我的具体观点。

当我有这样的AJAX命令时出现问题:

$.post('{{url("_submitcomment")}}', data, function(data) { ...

并且'url'无法反转'_submitcomment',因此返回一个空字符串。致电

$.post(''); 

会点击您当前的网址并尝试抓取所有内容!

(我使用的是Jinja2,顺便说一下,所以url命令看起来可能与传统的Django模板系统不同。)

感谢您的帮助和提示!

答案 1 :(得分:1)

您能否验证第二个请求不适用于“/favicon.ico”?

答案 2 :(得分:0)

在我的情况下,每个视图都被调用两次,因为我的基本模板在<link rel="icon" href="#"> 标记中包含不正确的图标链接。它可能看起来像这样:

<link>

因此,在加载页面后,浏览器再次向当前页面发送请求,这将导致第二次视图调用。

删除错误的find标记,它应该有效。