Django的session问题

博客的文章点赞功能,点赞一次+1,使用session记录当前用户
问题点就是:在文章1进行点赞,文章2点赞就会提示已支持过了,原因判断出已存在session
如何实现文章不能重复点赞

View代码

class LikeNumView(View):
    def post(self, request):
        if request.session.get('has_like', False):
            return HttpResponse('{"status":"fail", "msg":"已支持过"}', content_type='application/json')
        comments_id = request.POST.get("comments_id", "")
        blog = Blog.objects.get(id=int(comments_id))
        blog.like_number += 1
        blog.save()
        request.session['has_like'] = True
        return HttpResponse('{"status":"success", "msg":"感谢你的支持"}', content_type='application/json')

ajax代码
function like() {

            $.ajax({
                cache: false,
                type: "POST",
                url: "{% url 'like' %}",
                data: {'comments_id':{{ comments.id }}},
                async: true,
                beforeSend:function(xhr, settings){
                    xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
                },
                success:function (data) {
                    if (data.status=='fail'){
                        layer.msg("你已支持过")
                    }
                    else {
                        layers.msg("感谢你的支持")
                    }
                }
            })
        }
阅读 2k
1 个回答

两种方案均可,自行选择
1、做一张点赞记录表,用户ID,文章ID,点赞时间
2、点赞记录存放到redis里面,key值为用户ID+文章ID,value值为点赞时间

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题