文章点赞

一 视图函数

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:判断,最后返回给前端字典
	 中的信息
	 
		
	

  

 

posted @ 2017-11-28 19:11  Dear坏小子  阅读(156)  评论(0编辑  收藏  举报