django1.11python2.7开发了一个给文章与评论点赞的功能。下面的是代码:models:classNew_Likes(models.Model):likes_num=models.IntegerField(default=0)#点赞数author=models.ForeignKey(settings.AUTH_USER_MODEL)#点赞用户pub_date=models.DateTimeField(auto_now_add=True)#点赞时间#用了ContentType,主要是针对文章(Topic),评论(Reply)点赞content_type=models.ForeignKey(ContentType)object_id=models.IntegerField()content_object=GenericForeignKey('content_type','object_id')def__unicode__(self):returnu'%s:%s%s'%(self.content_type,self.object_id,self.likes_num)view.py里面:@login_required@csrf_exemptdefAdd_New_Likes(request,pk_id,obj_type):#pk_id=request.GET.get('pk_id')#obj_type=request.GET.get('obj_type')user=request.userret={'dataa':None,'status':False}c=ContentType.objects.get(model=obj_type)#这个try是看看这个模型(如文章Topic),id有没有其它用户给点过赞。#如果有的话把赞数取出来。作为下面新用户点赞数+1并存到数据库里。#作为前台调用用。但是这里的点赞数,一直反回不对。try:nnew_likes=New_Likes.objects.filter(content_type=c,object_id=pk_id)likes_num=nnew_likes[0].likes_numprint('nnew_likes',likes_num)except:likes_num=0try:#这里如果能得到new_lies说明该用户已经点赞过,#那么赞数不再增加直接反回给前端,以json的格式反回,这里的点赞数,一直反回不对new_likes=New_Likes.objects.get(content_type=c,object_id=pk_id,author=user)ret['dataa']=new_likes.likes_numret['status']=1returnJsonResponse(ret)exceptException,e:#如果当前用户没有对该文章点赞,那么就新建一个赞,#并让赞数+1,以json格式反回前端,new_likes=New_Likes(content_type=c,object_id=pk_id,author=user)new_likes.likes_num=likes_num+1new_likes.save()ret['dataa']=new_likes.likes_numret['status']=0returnJsonResponse(ret)urls.py:url(r'^new_addlikes/(?P\d+)/(?P[\w+]+)/$',Add_New_Likes,name='add_new_likes'),前端js+html代码是这样的:里面假设给文章(Topic)点赞点赞//问题:这里一般点赞后面都跟着一个,点赞数量,//而且是实时出来的。不知道怎么调出来的?functionlikes_topic(){$.ajax({type:'POST',url:'{%url"bbs:add_new_likes"topic.id"topic"%}',data:{'pk_id':{{topic.id}},'obj_type':'topic'},dataType:'json',processData:false,//告诉jquery不转换数据contentType:false,//告诉jquery不设置内容格式success:function(data,status){if(data.status==1){alert('已经赞过!');}else{alert('点赞成功!');}}});}以上是我写的。代码的功能也是我看了别人的代码自已想像的。至于功能我都写在上面注释里了,但是实际情况并不是像我想的那样。点赞数,一直反回的不对!上面代码可能有很多逻辑错误。由于自已能力有现。不知怎么能正常实现点赞功能并用ajax调用在前台。请各位朋友帮我看看。感谢!!!
2 回答

慕后森
TA贡献1802条经验 获得超5个赞
多谢。正在慢慢理解这块代码。基本已解决。还有一个就是在前端html点赞(点赞数) 这里的点赞数怎么无刷新更新,目前我能想到的是在文章topic的models下建defget_add_likes_num(self):returnself.new_likes.count()然后这样调用:点赞({{topic.get_add_likes_num}}) 这样需要刷新一下才会看到点赞数+1不知道怎么让这里点赞后无刷新更新这里?
添加回答
举报
0/150
提交
取消