抽屉之Tornado实战(5)--点赞与评论树
生活随笔
收集整理的這篇文章主要介紹了
抽屉之Tornado实战(5)--点赞与评论树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點贊
-
點贊的過程:數字增加,并在后臺點贊表記錄數據
-
需要發過去的數據:用戶id,新聞id
-
用戶id從session里獲得,那新聞id怎么獲取呢?這想到分頁是循環新聞列表來展示內容,循環的新聞id可以做為參數傳入事件中(在事件里發送ajax請求),看前端代碼:
-
?點贊數就在后臺根據新聞id去統計對應的客戶id數(點贊表中 )或者在新聞表在加一個字段--點贊數(favor_count),每次點了贊加個1
-
沒點贊的,點了+1,點了贊的,再點-1
?
代碼實現:
1、后端render+? list【新聞1,新聞2...】? 前端{{% for item in new_list %}}? 點贊標簽綁定οnclick=‘func(this,{{item.nid}})’
2、js:后臺會返回一個操作編碼,讓前端判斷,是加1操作,還是減1操作
function DoFavor(ths,nid){ //nid 新聞id//只有登錄狀態才能發送點贊ajax請求//獲取特定登陸狀態標簽的屬性值if($('#action_nav').attr('is-login') == 'true'){$.ajax({url:'/favor',type:'POST',data:{news_id:nid},dataType:'json',success:function(arg){if(arg.status){//獲取新聞點贊數顯示標簽var $favorCount = $("#favor_count_"+nid);//獲取點贊數var c = parseInt($favorCount.text());if(arg.code == 2301){//更新顯示$favorCount.text(c+1);//給點贊圖像加上活動狀態$(ths).find('span').addClass("active");//加動態效果AddFavorAnimation(ths);}else if(arg.code == 2302){//更新顯示$favorCount.text(c-1);//給點贊圖像去除活動狀態$(ths).find('span').removeClass('active');//動畫效果}}}})} }? 3、后臺判斷處理
class FavorHandler(BaseRequestHandler):#裝飾器主要做了一件---對用戶登陸狀態進行驗證,如果沒登錄,就不會執行post方法@decrator.auth_login_jsondef psot(self,*args,**kwargs):#這對象相當于以前的字典,用封裝錯誤信息,數據,狀態rep = BaseResponse()news_id = self.get_argument("news_id",None)if not news_id:rep.summary = '新聞ID不能為空'else:user_info_id = self.session['user_info']['nid']#創建鏈接conn = ORM.session#去數據庫看看有沒有已經點贊has_favor = conn.query(ORM.Favor).filter(ORM.Favor.user_info_id == user_info_id,ORM.Favor.news_id == new_id).count()#如果已贊,再點就是取消贊if has_favor:#取消贊就去點贊表里把那條數據刪除conn.query(ORM.Favor).filter(ORM.Favor.user_inro_id == user_info_id,ORM.Favor.news_id == news_id).delete()#并在新聞表里修改點贊數-1conn.query(ORM.News).filter(ORM.News.nid == news_id).update({"favor_count":ORM.News.favor_count - 1},synchronize_session='evaluate')#設置編碼rep.code = StatusCodeEnum.FavorMinus#如果沒贊,加贊else:#給點贊表增加數據conn.add(ORM.Favor(user_info_id=user_info_id,news_id=news_id,ctime=datetime.datetime.now))#給新聞表的點贊跟新+1conn.query(ORM.News).filter(ORM.News.nid == news_id).update({'favor_count':ORM.News.favor_count + 1},synchronize_session='evaluate')rep.code = StatusCodeEnum.FavorPlusconn.commit()conn.close()rep.status = Trueself.write(json.dumps(rep.__dict__))
? 4、配置編碼
FavorPlus = 2301 FavorMinus = 2302class BaseRespinse:def __init__(self):self.status = Falseself.code = StatusCodeEnum.Successself.data = Noneself.summary = Noneself.message = {}?
評論樹
- 評論樹默認不展開,點擊后展開,display:None
- 剛開始看到的新聞是沒有評論數據的,只有點擊了后才有,本質上就偷偷發了請求給后臺,然后把評論數據返回顯示在頁面上
轉載于:https://www.cnblogs.com/xinsiwei18/p/5869717.html
總結
以上是生活随笔為你收集整理的抽屉之Tornado实战(5)--点赞与评论树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flash调用摄像头弹出设置框监听
- 下一篇: 网络工程师计算机职称考试,软考网络工程师