0

我有课:

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'))

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

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

4

2 回答 2

0

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

于 2012-11-18T03:09:11.137 回答
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
于 2012-11-18T05:37:48.037 回答