2012-11-17 23 views
0

我有类:DJANGO热到点击链接后更改的数据库对象 - 无重定向

class Image(models.Model): 
    title = models.CharField(max_length=100) 
    imgFile1 = models.FileField(upload_to='%Y/%m/%d') 
    vote1 = models.IntegerField(default=0) 
    trofeum1 = models.IntegerField(default=0) 
    imgFile2 = models.FileField(upload_to='%Y/%m/%d') 
    vote2 = models.IntegerField(default=0) 
    trofeum2 = models.IntegerField(default=0) 
    home = models.IntegerField(default=0) 

和功能views.py:

def vote1(request,i_id=0): 
    imgId = str(i_id) 
    try: 
     if (request.session[imgId] == True): 
      return HttpResponseRedirect(reverse('app.views.err'))    
    except Exception: 
     request.session[imgId] = True 
    try: 
     image = Image.objects.get(pk=i_id) 
    except Exception: 
     image = None 
    image.vote1+=1 
    image.save() 
    if image.vote1 == 5: 
     image.trofeum1 += 1 
     image.trofeum2 = 0 
     image.vote1 = 0 
     image.vote2 = 0 
     image.imgFile2 = None 
     image.save() 
    return HttpResponseRedirect('app.views.index')) 

所以点击之后更新某个对象在我的数据库在我的网站上的一些链接,但我不想重定向后,只想改变我的数据库中的对象 - 点击 - >更新 - >没有其他的。你知道任何解决方案,以避免错误:视图app.views.vote1没有返回HttpResponse对象或任何其他方式来做到这一点?

我重定向到相同的页面,但在此之后,我在页面的顶部 - 我想在点击链接的同一个地方。

+4

好像你正在寻找阿贾克斯。这不是? – danihp

回答

0

试着用Ajax做同样的事情。它会这样做。

0

你可以用一个字符串返回一个HttpResponse,并在ajax函数中捕获它作为成功。所以,打破它:

在您的网页上,做一个ajax提交到vote1视图。

获取视图以返回HttpResponse对象而不是重定向。

在AJAX调用的成功处理程序中使用它。

你需要看jQuery AJAX可以使用的HttpResponse这样的:

from django.http import HttpResponse 
response = HttpResponse("Counter Updated", content_type="text/plain") 
return response