1

JavaScript

$('button.like').click(function(){
    $.get($(this).parent().attr('href'),function(data){
        $(this).html(''+data);
    });
    return false;
});

見る

def like(request):
    if request.is_ajax:
        r = Restaurant.objects.get(pk=1)
        r.food_likes +=1
        r.save()
        return HttpResponse(str(r.food_likes))
    else:
        return redirect(request.META.get('HTTP_REFERER'))

html

    <a href="/like/">
        <button class="like pull-right btn btn-info text-left pad0  btn-mini mrg-left5 like-food">
            <i class="icon-thumbs-up"></i>&nbsp;`{{rest.food_likes}}`
        </button>
    </a>

疑問に思う

セッションを使用して JavaScript を変更し、ユーザーがページをリロードした場合でも、好き嫌いを切り替えることができるようにするにはどうすればよいですか。彼が自分のアクションを元に戻したい場合は、それを嫌うように求められるはずです。助けてください

4

1 に答える 1

2

ユーザーのセッションにデータをdjangoに簡単に保存できます。

# Returns value of is_user_like key from user's session if it's available, or False
request.session.get('is_user_like', False)
# Sets value of is_user_like in user's session to True
request.session['is_user_like'] = True

テンプレートを次のように変更します。

<a href="/like/">
    <button class="like pull-right btn btn-info text-left pad0  btn-mini mrg-left5 like-food">
        <i class="{% if user_likes %}icon-thumbs-down{% else %}icon-thumbs-up{% endif %}"></i>&nbsp;`{{rest.food_likes}}`
    </button>
</a>

そしてuser_likes = request.session.get('is_user_like', False)テンプレートレンダラーに渡します。また、好きなビューのコードに store to session 行を追加します (そして、嫌いなビューがある場合は否定的です):

def like(request):
    if request.is_ajax:
        r = Restaurant.objects.get(pk=1)
        r.food_likes +=1
        r.save()
        request.session['is_user_like'] = True
        return HttpResponse(str(r.food_likes))
    else:
        return redirect(request.META.get('HTTP_REFERER'))

このドキュメントを見て、django で SessionMiddleware を有効にしたことを確認してください - 生成された設定ファイルでデフォルトで有効になっています: https://docs.djangoproject.com/en/dev/topics/http/sessions/

于 2012-08-23T11:57:07.740 に答える