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)给模板渲染器。还将商店添加到会话行到您喜欢的视图的代码中(不喜欢视图是负面的 - 如果有的话):

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 回答