抽屉之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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国计算机等级考试题库二级C操作题100套(第98套)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

用于计算的计算机主机,一种用于区块链计算的计算机主机的制作方法

技术特征&#xff1a;1.一种用于区块链计算的计算机主机&#xff0c;包括计算机主机主体(1)&#xff0c;其特征在于&#xff1a;所述计算机主机主体(1)上开凿有散热孔(2)&#xff0c;且计算机主机主体(1)的内腔通过散热孔(2)与外界相连通&#xff0c;所述散热孔(2)内固定连接有…

光动能表怎么维护_西铁城手表推荐,西铁城光动能表推荐选购指南

有的朋友们在京东上面看到款式多样的西铁城手表和西铁城光动能手表的时候&#xff0c;不知道怎么选择哪一款适合自己佩戴的&#xff1f;那么今天我就通过这篇文章&#xff0c;跟大家详细的分享一下关于西铁城手表的知识。让大家在选购的时候更加清晰明了的知道哪一款适合自己。…

python-2:工欲善其事,必先利其器 修改jupyter保存文件目录(亲测)

在桌面上创建 Jupyter Notebook快捷方式图标.将打开的Jupyter Notebook程序关闭&#xff0c;然后找到桌面快捷方式&#xff0c;右键>属性&#xff0c;然后把目标后面输入框最后的“%USERPROFILE%”这个参数去掉后&#xff0c;确定。否则之后做的其它修改无法生效。打开 cmd …

实战分层架构

现在可选的框架 现在我们开发一个.net应用&#xff0c;面临的选择比较多。我们可以选择entity framework, enterprise library, nhibernate, 还有一个mybatis.net, 即java世界mybatis/ibatis的.net版。 IOC的框架可以选择Unity, Ninject&#xff0c;Spring.net(java的spring对应…

全国计算机等级考试题库二级C操作题100套(第99套)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

isleapyear python_Python实战练习——打印日历教程

很长一段时间没有接触过C语言了&#xff0c;想来做这一行当已经有三两年了。今天突然想起来以前用C语言在VC6上写代码的日子&#xff0c;想了想以前的一些实战练习。所以今天打算用Python来写一个C语言以前练习的题目-日历打印器&#xff0c;并根据情况进行优化。效果如上图所示…

在计算机附近用英语怎么说,附近用英语怎么说

附近指靠近&#xff0c;离某地不远的地方&#xff0c;是我们日常表达方位常用的词组。那么你知道附近用英语怎么说吗?下面跟学习啦小编一起学习附近的英语知识吧。附近的英语说法nearbyproximityvicinity附近的相关短语附近的 nearby ; adjacent ; surrounding ; neighbouring…

字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD

Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.com字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD 目录 目录CSV文件简介解析工具类数据格式&#xff1a;工具类数据模型CSV文件简介 逗号分隔值&#x…

python替代_2.3.1 Python 实现的替代者

2.3 执行模块的变种在继续学习之前&#xff0c;应该指出前一节所介绍的内部执行流程反映了如今Python 的标准实现形式&#xff0c;并且这实际上并不是Python 语言本身所必需的。正是因为这一点&#xff0c;执行模块也在随时间而演变。事实上&#xff0c;从某种意义上讲有些系统…

全国计算机等级考试题库二级C操作题100套(第100套)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

主页是单一的HTML文件,什么是主页,下列说法最为准确的是 _____。

关于局域网、广域网和互联网的组建和因特网的接入&#xff0c;回答下列问题。(1)关于局域网和广域网的组建&#xff0c;下列说法不正确的是 _____。(A)若要组建多台计算机的局域网络&#xff0c; 通常需要集线器 Hub、网卡和双绞线&#xff0c;通过集线器实现多台计算机的连接;…

【共读Primer】55.[6.4]函数重载--重载与作用域 Page210

讲解之前&#xff0c;先来看一组代码 string read(); void print(const string &); void print(double); void fooBar(int ival) {bool read false; // 新作用域&#xff1a;隐藏了外层的readstring s read; // 错误&#xff1a; read是一个布尔值&#xff0c;而非函数…

python中numpy模块的around方法_Python numpy.around()用法及代码示例

numpy.around(arr&#xff0c;decimals 0&#xff0c;out None)&#xff1a;此数学函数可帮助用户将数组元素平均舍入为给定的小数位数。参数&#xff1a;array :[数组]输入数组。decimal :[int&#xff0c;可选]我们要舍入的小数位。默认值0。如果是-ve十进制&#xff0c;则…

安卓APP_ 其他(1) —— 程序的签名打包并在手机上运行

摘自&#xff1a;安卓APP_ 其他&#xff08;1&#xff09; —— 程序的签名打包并在手机上运行 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-29 20:58:26 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115310388 刚学到第四个控件&am…

设置centos6 yum源为光盘

1、挂载光盘mount /dev/cdrom /media/cdrom2、设置CentOS-Media.repo检查/etc/yum.repos.d/目录是否存在里文件&#xff0c;如存在&#xff0c;此步略过&#xff0c;如果不存在&#xff0c;手动建立&#xff0c;代码如下&#xff1a;[c6-media]nameCentOS-$releasever - Mediab…

计算机数据恢复专业,专业电脑数据恢复软件哪个好

原标题&#xff1a;专业电脑数据恢复软件哪个好在我们日常清理电脑时&#xff0c;有时会意外删除一些有用的文件&#xff0c;比如重要文件、照片等。这时就需要使用数据恢复软件尝试恢复数据。EasyRecovery是一款强大有效实现数据恢复的软件&#xff0c;软件占用空间小&#xf…

C#开发移动应用系列(2.使用WebView搭建WebApp应用)

C#开发移动应用系列(2.使用WebView搭建WebApp应用) 原文:C#开发移动应用系列(2.使用WebView搭建WebApp应用)前言上篇文章地址:C#开发移动应用系列(1.环境搭建) 嗯..一周了 本来打算2天一更的 - - ,结果 出差了..请各位原谅.. 今天我们来讲一下使用WebView搭建WebApp应用. 说明一…

new 一个模板、类_Java必备基础-类(Class)

你好&#xff0c;我是goldsunC让我们一起进步吧&#xff01;类上一篇文章介绍了Java的基础数据类型和引用数据类型中的数组&#xff0c;引用数据类型除了数组之外&#xff0c;还包括类和接口。那什么是引用数据类型呢&#xff1f;看个例子&#xff1a;public class Test {publi…