美文网首页
31.收藏课程功能

31.收藏课程功能

作者: hs_a2d1 | 来源:发表于2018-02-19 13:46 被阅读0次
    function add_fav(current_elem, fav_id, fav_type){
        $.ajax({
            cache: false,
            type: "POST",
            url:"/org/add_fav/",
            data:{'fav_id':fav_id, 'fav_type':fav_type},
            async: true,
            beforeSend:function(xhr, settings){
                xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
            },
            success: function(data) {
                if(data.status == 'fail'){
                    if(data.msg == '用户未登录'){
                        window.location.href="/login/";
                    }else{
                        alert(data.msg)
                    }
    
                }else if(data.status == 'success'){
                    current_elem.text(data.msg)
                }
            },
        });
    }
    
    $('.collectionbtn').on('click', function(){
        add_fav($(this),{{ course_org.id }}, 2);
    });
    

    if(data.msg == '用户未登录'){
    window.location.href="/login/";
    }else{
    alert(data.msg)
    }
    如果data.msg == '用户未登录'则跳转window.location.href="/login/",否则alert(data.msg)
    点击收藏按钮后,执行
    $('.collectionbtn').on('click', function(){
    add_fav($(this),{{ course_org.id }}, 2);
    });这段在应用函数时候也会给fav_id, fav_type赋值{{ course_org.id }}, 2,传递给后台,后台

    class AddFavView(View):
        """
        用户收藏,取消收藏
        """
        def post(self,request):
            fav_id = request.POST.get('fav_id',0)
            fav_type = request.POST.get('fav_type',0)
    

    这样获取到fav_id, fav_type。

    class AddFavView(View):
        """
        用户收藏,取消收藏
        """
        def post(self,request):
            fav_id = request.POST.get('fav_id',0)
            fav_type = request.POST.get('fav_type',0)
    
            if not request.user.is_authenticated():
                """
              判断用户登录状态
              """
                return HttpResponse('{"status":"fail","msg":"用户未登录"}',content_type='application/json')
    
            exist_records = UserFavorite.objects.filter(user=request.user,fav_id=int(fav_id),fav_type=int(fav_type))
            """
           fav_id和fav_type联合查询,如果只查一个fav_id,则fav_id=1时显示已收藏,fav_type=1也会显示已收藏
           """
            if exist_records:
                #如果记录已存在,则取消收藏
                exist_records.delete()
                return HttpResponse('{"status":"fail","msg":"收藏"}', content_type='application/json')
            else:
                user_fav = UserFavorite()
                if int(fav_id)>0 and int(fav_type)>0:
                    user_fav.user = request.user
                    user_fav.fav_id = int(fav_id)
                    user_fav.fav_type = int(fav_type)
                    user_fav.save()
                    return HttpResponse('{"status":"success","msg":"已收藏"}', content_type='application/json')
                else:
                    return HttpResponse('{"status":"fail","msg":"收藏出错"}',content_type='application/json')
    

    后台处理完数据保存到operation里的userfavorite表里再返回给前端,前端就知道显示收藏还是已收藏。
    还需要配置url,

    url(r'^add_fav/$', AddFavView.as_view(), name="add_fav"),
    

    但是这个地址还打不开,只是在ajax里add_fav函数的url里用了下,不知道为啥。

    相关文章

      网友评论

          本文标题:31.收藏课程功能

          本文链接:https://www.haomeiwen.com/subject/dctzzxtx.html