日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抽屉之Tornado实战(5)--点赞与评论树

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽屉之Tornado实战(5)--点赞与评论树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點贊

  • 點贊的過程:數字增加,并在后臺點贊表記錄數據

  • 需要發過去的數據:用戶id,新聞id

  • 用戶id從session里獲得,那新聞id怎么獲取呢?這想到分頁是循環新聞列表來展示內容,循環的新聞id可以做為參數傳入事件中(在事件里發送ajax請求),看前端代碼:

<div class="content-list" id="content_list">{% for item in new_list %}<div class="item"><a οnclick="Favor(this,{{item.nid}})">點贊9</a></div>{% end %}</div>
  • ?點贊數就在后臺根據新聞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)--点赞与评论树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。