Django点赞。通过cookie实现简单的点赞功能。

前言

目前所学甚浅,点赞功能用cookie做的。虽基本功能已经实现,却藏着不小的bug。先记录一下,待厚积所学,加以改之。

前端实现:

添加onclick事件,函数建立cookie,通过判断cookie来确定是点赞数是加or减。

先写一个获得cookie的函数。

// 查询cookie的函数
        function getCookie(cname) {
                var name = cname + "=";
                var ca = document.cookie.split(';');
                for (var i = 0; i < ca.length; i++) {
                    var c = ca[i].trim();
                    if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
                }
                return "";
            }
        if (getCookie('is_like') === 'false') {
            document.getElementById('like_num').style.color = "red";
        }
        else
        {
            document.getElementById('like_num').style.color = "blue";
        };

判断cookie,确定是点赞数是加or减。

function likeChange() {
            if (getCookie('is_like') === 'false') {
                 document.getElementById('like_num').innerHTML = Number($('#like_num').text()) - 1;
                 document.cookie = 'is_like' + "=" + 'true' + "; max-age=60*60*24"; '/show/' + toString('{{loveletter.pk}}');
                 document.getElementById('like_num').style.color = "blue";
            }
            else
            {
                document.getElementById('like_num').innerHTML = Number($('#like_num').text()) + 1 ;
                document.cookie = 'is_like' + "=" + 'false' + "; max-age=60*60*24" ;'/show/' + toString('{{loveletter.pk}}');
                document.getElementById('like_num').style.color = "red";
                // document.getElementById('like').innerHTML = ' <a class="btn btn-danger"  οnclick="like()" id="like">支持过啦</a>'
            }
            document.cookie = 'like_num' + "=" + getCookie("is_like") + "; max-age=30"; '/show/' + toString('{{loveletter.pk}}');
        };

后端也通过cookie判断后储存数据。

if request.COOKIES.get('like_num') == 'true':
	# 点赞数加一
elif request.COOKIES.get('like_num') == 'false':
	# 点赞数减一
obj.save()

想过删除cookie来组织点赞数在短时间内可以一直加减的问题,效果始终不太满意。

 // 判断浏览器是关闭还是刷新
        // 设置localStorage的过期时间
        var beginTime = 0; //执行onbeforeunload的开始时间
        var differTime = 0; //时间差
        window.onunload = function () {
            differTime = new Date().getTime() - beginTime;
            if (differTime <= 5) {
                localStorage.clear();
            } else {
                document.cookie = 'like_num' + "=" + getCookie("is_like") + "; max-age=-1"; '/show/' + toString('{{loveletter.pk}}');
            }
        };
        window.onbeforeunload = function () {
            beginTime = new Date().getTime();
            console.log(beginTime); // 浏览器开启时间?
        };

有大佬有幸路过,希望能给点建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值