2012-11-17 20 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