我似乎无法为我的生活找到问题。很简单,我有一个数据库对象,我从数据库中提取,将它的“视图”递增一个,然后保存。我的视图显示增加的值,但随后我的日志显示该值会再次增加。
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)
答案 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
标记,它应该有效。