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