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

文字列で HttpResponse を返し、それを ajax 関数の成功としてキャッチできます。したがって、それを分解するには:

あなたのページで、vote1 ビューに ajax 送信を行います。

リダイレクトの代わりに 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 に答える
0

Ajax で同じことをやってみてください。それはそれをします。

于 2012-11-18T03:09:11.137 に答える