zoukankan      html  css  js  c++  java
  • 文章点赞

    一 视图函数

    def poll(request):
    
        user_id=request.user.id
        article_id=request.POST.get("article_id")
    
        pollResponse = {"state": True, "is_repeat": None}
        # if models.Article_poll.objects.filter(user_id=user_id, article_id=article_id):
        #     pollResponse["state"]=False
        #     pollResponse["is_repeat"]="你已经点过了"
    
        try:
            with transaction.atomic():
                article_poll=models.Article_poll.objects.create(user_id=user_id,article_id=article_id)
                models.Article.objects.filter(id=article_id).update(pull_count=F("pull_count")+1)
        except:
            pollResponse["state"] = False
            pollResponse["is_repeat"] = "你已经点过了"
    
    
        return HttpResponse(json.dumps(pollResponse))  

    二 前端

    <div class="updown">
      <div class="buryit pull-right">
          <span class="burynum" id="bury_count">53</span>
        </div>
        <div class="diggit pull-right">
           <span class="diggnum" id="digg_count">{{ article_obj.poll_count }}</span>
        </div>
    </div>
    
    
    
    
       //实现ajax点赞
            $(".diggit").click(function () {
    
                $.ajax({
                    url: "/app01/poll/",
                    type: "post",
                    data: {
                        csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(),
                        article_id: "{{ article_obj.id }}"
                    },
                    success: function (data) {
    
                        var data = JSON.parse(data);
                        console.log(data)
                            if (data.state) {
                            var val = parseInt($("#digg_count").html()) + 1;
                            $("#digg_count").html(val)
                        }
                        else  {
                            $(".diggnum_error").html("您已经点过赞").css("color", "red")
                        }
                    }
    
                })
            });
    

      三 view 视图函数中用的模块

    from django.db import transaction
    from django.db.models import F
    

      四流程

    ajax点赞
        一在HTML中
    		1寻找点赞按钮,添加点击事件
    		2写ajax:
    			url,type,data
    			把data对象转化成新的json格式的data对象
    			然后判断,是否在state中,如果在,就强转成数字类型
    			然后添加到HTML页面,如果不是,就返回错误信息
    		
    	 二,后台管理,视图函数中
    	 首先得到用户是当前登录用户,文章是当前用户登录的文章,然后写
    	 一个字典,pollResponse并写入信息,然后取出点赞文章对象以及文
    	 章的点赞数,在进行try:......except:判断,最后返回给前端字典
    	 中的信息
    	 
    		
    	
    

      

  • 相关阅读:
    多国语言功能设计与实现
    锁标记
    Qt之生成Window资源文件(.rc 文件)
    如何获取本地html文件的标题
    Qt+gsoap调用WebService
    在Qt中使用ActiveX控件
    让notepad.exe的utf8不添加BOM
    Asp.Net生命周期系列四
    C#操作AD及Exchange Server总结
    C#彻底解决Web Browser 跨域读取Iframes内容
  • 原文地址:https://www.cnblogs.com/wanghaohao/p/7911629.html
Copyright © 2011-2022 走看看