首页 > 其他分享 >点赞点踩图标的制作

点赞点踩图标的制作

时间:2023-05-12 20:12:11浏览次数:67  
标签:back 点赞点 up dic article 制作 id 图标

目录

拷贝代码

{#    点赞点踩开始#}
    <div id="div_digg">
    <div class="diggit" onclick="votePost(17391141,'Digg')">
        <span class="diggnum" id="digg_count">1</span>
    </div>
    <div class="buryit" onclick="votePost(17391141,'Bury')">
        <span class="burynum" id="bury_count">0</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips">
    </div>
</div>
{#    点赞点踩结束#}

拷贝样式

{% block css %}
    <style>
        #div_digg {
            float: right;
            margin-bottom: 10px;
            margin-right: 30px;
            font-size: 12px;
            width: 125px;
            text-align: center;
            margin-top: 10px;
        }

        .diggit {
            float: left;
            width: 46px;
            height: 52px;
            background: url('/static/img/upup.png') no-repeat;
            text-align: center;
            cursor: pointer;
            margin-top: 2px;
            padding-top: 5px;
        }

        .buryit {
            float: right;
            margin-left: 20px;
            width: 46px;
            height: 52px;
            background: url('/static/img/downdown.png') no-repeat;
            text-align: center;
            cursor: pointer;
            margin-top: 2px;
            padding-top: 5px;
        }

        .clear {
            clear: both;
        }

        .diggword {
            margin-top: 5px;
            margin-left: 0;
            font-size: 12px;
            color: #808080;
        }
    </style>
{% endblock %}

拷贝图片
image
image
image

实现功能完整代码

路由’

# 点赞点踩
    path('up_and_down/', views.up_and_down),

html

{#    点赞点踩开始#}
    <div id="div_digg">
    <div class="diggit action">
        <span class="diggnum" id="digg_count">{{ article_detail.up_num }}</span>
    </div>
    <div class="buryit action">
        <span class="burynum" id="bury_count">{{ article_detail.down_num }}</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips" style="color: red"></div>
</div>
{#    点赞点踩结束#}
{% endblock %}

{% block js %}
    <script>
        $(".action").click(function () {
            var _this = $(this);
            // 区分开到底点的是赞还是踩
            // 如果返回是True ,说明是赞 否则是踩
            var is_up = $(this).hasClass('diggit')

            // 文章id
            var article_id = '{{ article_detail.pk }}'

            // 用户id, 后端从session;里获取

            // 发起Ajax请求,把数据提交到Django的后端
            $.ajax({
                url: '/up_and_down/',
                type: 'post',
                data: {
                    is_up: is_up, article_id: article_id, csrfmiddlewaretoken: '{{ csrf_token }}'
                },
                success: function (res) {
                    if (res.code == 200){
                        $("#digg_tips").html(res.msg);
                        // 要先拿到原来的数量,然后+1, 再写进去
                        // 1.要拿到原来的值
                        var old_num = _this.children().text(); //string
                        _this.children().text(parseInt(old_num) + 1);
                } else{
                        $("#digg_tips").html(res.msg);
                    }
                }
            })
        })
    </script>
{% endblock %}

视图函数


def up_and_down(request):
    if request.method == 'POST':
        # 1.定义返回给前端的数据格式
        back_dic = {'code': 200, 'msg': '点赞成功'}

        # 2.接收参数
        is_up = request.POST.get('is_up')
        article_id = request.POST.get('article_id')
        print(is_up, type(is_up))  # true <class 'str'>

        # 3.验证参数
        if not request.session.get('username'):
            back_dic['code'] = 1006
            back_dic['msg'] = '<a href="/login/" style="color:red">请先登录</a>'

        # 自己的文章自己不能点
        # 先通过当前文章去查询谁写的,然后与当前登录用户比较
        article_obj = models.Article.objects.filter(pk=article_id).first()
        print(article_obj)
        if article_obj.blog.userinfo.username == request.session.get(('username')):
            back_dic['code'] = 1007
            back_dic['msg'] = '宝贝啊,不能给自己支持'
            return JsonResponse(back_dic)

        # 验证一篇文章一个人只能点一次
        # 根据文章id和用户id两个条件,去表里面查询,如果查到了,说明已经点过了,不能再点了
        is_click = models.UpAndDown.objects.filter(article_id=article_id, user_id=request.session.get('id')).first()
        if is_click:
            back_dic['code'] = 1008
            back_dic['msg'] = '你已经点过了'
            return JsonResponse(back_dic)


        # 4.入库
        # 操作哪些表?
        # 1、点赞点踩表 2.文章表: 点赞数 点赞数

        # 这里需要要对is_up做反序列化
        # jason.dumps json.loads
        is_up = json.loads(is_up)

        if is_up:
            # 说明是点赞了
            models.Article.objects.filter(pk=article_id).update(up_num=F('up_num') + 1)
        else:
            # 点踩了
            models.Article.objects.filter(pk=article_id).update(down_num=F('down_num') + 1)
            back_dic['msg'] = '我们努力'

        # 操作点赞点踩表
        models.UpAndDown.objects.create(is_up=is_up, article=article_obj, user_id=request.session.get('id'))
        # models.UpAndDown.objects.create(is_up=is_up, article=article_obj)
        return JsonResponse(back_dic)

标签:back,点赞点,up,dic,article,制作,id,图标
From: https://www.cnblogs.com/yuezongke/p/17396193.html

相关文章

  • 如何使用appuploader制作描述文件​
    如何使用appuploader制作描述文件​承接上文我们讲述了怎么制作证书,本文我们来看下怎么制作描述文件吧。​制作描述文件前我们首先我们来添加一个测试设备,后面再制作描述文件。1.添加测试设备​其中添加设备一项中,根据提示操作添加测试设备,扫码添加即可。​2.描述文件​首......
  • 如何使用appuploader制作描述文件​
    如何使用appuploader制作描述文件​承接上文我们讲述了怎么制作证书,本文我们来看下怎么制作描述文件吧。​制作描述文件前我们首先我们来添加一个测试设备,后面再制作描述文件。1.添加测试设备​其中添加设备一项中,根据提示操作添加测试设备,扫码添加即可。​2.描述文件​首......
  • 使用Latex制作表格方法总结
    1.前言最近又开始写论文,记录一下使用Latex制作表格的方法2.不同类型表格制作2.1最基本的无线表格:tabbing利用制表位进行表格的排版,但是不会出现表线,另外这个环境对于制表位比较灵活,需要考虑很多因素(制表位的相对位置)才能制作出一个精美的表格.一般来说不是很常用.......
  • 如何使用appuploader制作apple证书​
    转载:如何使用appuploader制作apple证书​ 1.证书管理​点击首页的证书管理2.新建证书​点击“添加”,新建一个证书文件(PS:推荐勾选密码下面的蓝字字体内容),免费账号制作证书只有7天有效期,没有推送消息功能,推送证书是用来配置在网站上推送的。不是用来打包编译app的。​并且免......
  • U盘制作linux启动盘
    1、前期准备使用U盘安装Linux系统,需要准备以下工具:   ·大容量的U盘(安装CentOS6.x系统,U盘容量至少8G);·UltraISO工具,用来制作U盘启动盘。除此之外,由于UltraISO工具是Windows软件,所以需要一台安装了Windows系统的计算机协助;·CentOS6.x系统的ISO映......
  • Win10文件资源管理器无法找到“始终显示图标,不显示缩略图”的解决办法
    来源:https://answers.microsoft.com/en-us/windows/forum/all/always-show-icons-never-thumbnails-option-not/31a04351-eaf7-4ed0-9b1f-d74682514f11顺利解决缩略图不显示的问题。有可能会问是否替换,输入yes即可。Basedfromthescreenshotthatyou'veprovided,itappears......
  • 视频加字幕怎么制作?视频加字幕软件全分享!​
    视频加字幕怎么制作?视频加字幕是指在视频中添加文字说明或翻译的操作,以便于观众理解和沟通。通过视频加字幕,可以为听障人士、非母语使用者等人群提供更好的观看体验,并且方便用户在不方便听声音的场合下了解视频内容,很多小伙伴想给自己的视频加上一个字幕,却不知道该用什么软件进行,下......
  • linux静态库的制作及问题解决
       首先介绍下分文件,在学习或者开发中,实现一个项目需要实现很多的功能,那么这些功能不可能在一个".c"文件下实现,需要多个".c"文件来共同实现,但是程序的入口只有一个,就体现了分文件编程的重要性,在主函数中调用其余的功能函数。分文件编程的优点及意义就是:分模块编程思......
  • 如何利用Spine制作简单的2D骨骼动画(附软件下载)
    在2D游戏中,我们经常看到各种各样的角色动画。动画能给游戏带来生机和灵气。创作一段美妙的动画,不仅需要强大的软件工具,更需要一套完善的工作流程。Spine就是一款针对游戏开发的2D骨骼动画编辑工具。Spine可以提供更高效和简洁的工作流程,以创建游戏所需的动画。下载Spine3.8.7......
  • Android系统中自带的图标&一些预定义样式&参考颜色值
    Android系统中自带了很多图标,我们的程序可以方便使用。Android™1.5android.R.drawableIconResourceshttp://since2006.com/android/1.5-drawables.phpAndroid™1.6android.R.drawableIconResourceshttp://since2006.com/android/1.6-drawables.ph......