在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  HTML/ Django的session問題

Django的session問題

博客的文章點(diǎn)贊功能,點(diǎn)贊一次+1,使用session記錄當(dāng)前用戶
問題點(diǎn)就是:在文章1進(jìn)行點(diǎn)贊,文章2點(diǎn)贊就會提示已支持過了,原因判斷出已存在session
如何實(shí)現(xiàn)文章不能重復(fù)點(diǎn)贊

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("感謝你的支持")
                    }
                }
            })
        }
回答
編輯回答
柒喵

兩種方案均可,自行選擇
1、做一張點(diǎn)贊記錄表,用戶ID,文章ID,點(diǎn)贊時(shí)間
2、點(diǎn)贊記錄存放到redis里面,key值為用戶ID+文章ID,value值為點(diǎn)贊時(shí)間

2017年8月22日 16:27