抽屉之Tornado实战(1)--分析与架构   项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX  用于偷偷发请求 原生ajax jQuery  ajax($.ajax) iframe伪造 上传文件 传统Form 弊端:会刷新页面   提醒:enctype=‘multiprt/form-data’记住这个特殊的设置 ajax上传:FormData方式(不是所有的浏览器都支持),Form表单+iframe(兼容性好) session  依赖cookie 验证码 …
点赞 点赞的过程:数字增加,并在后台点赞表记录数据 需要发过去的数据:用户id,新闻id 用户id从session里获得,那新闻id怎么获取呢?这想到分页是循环新闻列表来展示内容,循环的新闻id可以做为参数传入事件中(在事件里发送ajax请求),看前端代码: <div class="content-list" id="content_list"> {% for item in new_list %} <div class="item&qu…
当然今天讲的验证,不只Tornado会用,以后用到web框架都会用到,最常见的场景就是只有用户登陆了才能执行某些操作,所以在执行这些操作前要先做登陆状态的验证. 比如:点赞,发布,评论等需要验证,都需要用到if self.session[‘is_login’]进行判断,你可能觉得,这代码也不多啊,不过一旦网站大了,场景多了,可以写到你手抽筋,其实我们可以在执行post方法或get方法之前进行登陆状态的验证,用装饰器进行这么一个功能扩充就可以了 decrator.py #处理刷新页面的请求 def…
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 #一张表对应一个类 class UserInfo(Base): #把表名赋给静态字段 __tablename__ = 'userinfo' #序号nid,用户名username,密码password,邮箱email,创建时间ctime #一行数据就是一个对象 nid = Column(Integer, primary_key=T…
我之前写的session一般保存在服务器的内存里,那可以保存在缓存,或是数据库,那问题来了,不同地方,保存方式是不同的,所以需要定义不同的类,cache/redis/memcached类 session.py import config from hashlib import sha1 import os import time create_session_id = lambda: sha1(bytes('%s%s' % (os.urandom(16), time.time()), encod…
在这里,我们把form表单验证的代码进行工具化了,以后稍微修改一下参数就可以拿来用了 先贴上代码 forms.py from backend.form import fields class BaseForm: def __init__(self): self._value_dict = {} self._error_dict = {} self._valid_status = True def valid(self, handler): for field_name, field_obj in…
对于链接,点击获取标题时,本质发送ajax请求,然后去链接抓取信息,发布又是发送ajax请求 发布信息,还要有发布者的信息,并在信息表需要记录发布者的用户名,发布者的头像,发布者的id,而这些信息可以通过session获得(前提是设置session要设置了这些信息) 对于文字,没什么好说的,就一个发布时需要发送ajax请求 对于图片,选择图片和上传图片一起做,即选择完图片,图片就上传到后台,并且在页面上展示图片效果,本质上也是偷偷发请求,而且绑定不是常见的onclick事件,而是onchange…
知识点应用:标签绑定事件,jQuery获取用户值-->AJAX发送数据-->后台路由系统-->业务逻辑处理-->ORM数据操作-->write返回-->AJAX回调函数接收-->页面效果显示 第一步:我们要给前端的获取验证码按钮绑定一个onclick事件--发送邮件验证码 找到views下home  index.html找到标签,onclick=SendCode(this) 定义事件,获取邮箱,发送ajax请求 jQuery代码如下: function SendC…
抽屉之Tornado实战(1)--分析与架构 抽屉之Tornado实战(2)--数据库表设计 抽屉之Tornado实战(3)--注册 抽屉之Tornado实战(4)--发帖及上传图片 抽屉之Tornado实战(5)--点赞与评论树 抽屉之Tornado实战(6)--session工厂(工厂方法模式) 抽屉之Tornado实战(7)--form表单验证 抽屉之Tornado实战(8)--发布新闻 抽屉之Tornado实战(9)--装饰器实现用户登录状态验证…
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的前端数据处理. 转载请注明出处http://www.cnblogs.com/wanghzh/p/5806514.html 抽屉官网:http://dig.chouti.com/ 一.配置(settings) settings = { 'template_path': 'views', #模板文件路径…
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的前端数据处理. 转载请注明出处http://www.cnblogs.com/wanghzh/p/5806514.html 抽屉官网:http://dig.chouti.com/ 一.配置(settings) settings = { 'template_path': 'views', #模板文件路径…
Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="javascript:void(0);" alt="replybtn">我也说 <a class="c_tx3" href="javascript:void(0);" alt="replybtn">我也说…
一.点赞功能 思路是这样的: 1.对点赞和踩都设置一个相同的class,然后对这个class绑定点击事件 2.点击触发ajax请求,我们对赞的标签设置了一个class属性,对踩的标签没有设置这个class属性,如果我们点击的标签有这个class属性,则我们认为这次点击的赞,如果没有,则我们认为是踩 3.ajax向后台发的数据有文章的id.和这次是踩还是赞的信息即可,因为这次操作的用户,可以直接从后台获取,因为我们用了django默认的auth模块,这里要注意,由于ajax这次发的是post请求,…
小编能力有限,本文纯属瞎编,如有雷同,你去打辅导员涩 一.前戏 有个操蛋,操蛋,操蛋的辅导员促使小编成长,原因:易班需要活跃度,辅导员安排班上每个人必须去易班上 写文章,写评论,发投票...  我觉得辅导员肯定小瞧我们了,我们班像好好刷易班的人嘛. 结果就鸡儿了涩,都没去发.直接导致辅导员强行安排(早上6.50格老子全班跑操,跑到易班活跃度足够为止!!!), 不要问我那个学校的,厂长也不是我表哥 二.话不多说,上码 模块:requests,re, rsa,pycryptodemo,base64,…
文章归档的实现 我们在创建文章时,会在数据库中存储文章创建的时间这样的字段,一般用的都是datetime类型,记录文章创建的年月日和时分秒,所以我们直接使用文章的创建时间分类是无法实现文章的按年月归档的,因为每一篇文章的时间是不一样的,所以我们在使用ORM查询时就无法做到按年月分类的需求,这是就需要额外的SQL语句来实现,在SQL语句中有一个很重的时间格式化的方法:date_format 我们可以使用ORM中执行SQL语句原生用法的方法:extra from blog import models…
六.文章详情.点赞.评论 文章详情页面: def article_detail(request, username, article_id): # user_obj = models.UserInfo.objects.filter(username=username) article_obj = models.Article.objects.filter(pk=article_id).first() blog = models.Blog.objects.filter(userinfo__user…
目录 Selenium 是什么? 一.核心代码 二.步骤分解 1.打开浏览器 2.访问微博登录页 3.输入账号密码 4.点击登录 5.通过人机验证 6.打开我们的中公题库君首页 7.加一下关注 8.定位到第2条微博准备给她点赞评论一下 9.开始点赞 10.点击评论 Selenium 是什么? Selenium是一个用于Web应用程序测试的工具,可以模拟真正的用户操作,支持多种浏览器,如a Firefox,Safari,Google Chrome,Opera等. 正好,我们公司有一个妹纸团队运营的…
微信小程序仿朋友圈功能开发(发布.点赞.评论等功能) 1.项目分析 项目整体分为三个部分 发布 展示 详情页 graph LR 朋友圈发布 --内容发布--> 内容展示 内容展示 --点击展示卡--> 详情查看 2.数据库设计分析 **所有表共有字段 *com ** [x] create_time 记录的创建时间 [x] update_time 记录最近的一次修改时间 动态表设计 circles_list 既然是仿朋友圈功能实现,那么数据实体必然包括 文字(主题内容) 和 图片. [x] co…
前言 某天朋友说,能不能帮忙扒下ins的博主帖子,要所有帖子的点赞和评论,我本来准备让会python的同事写的,最后还是自己顺手写了,本来一开始准备用nodejs或者js写的,想着前端本地测试代理和导excel比较麻烦还是用Java吧,正好好久没写Java了,就当回忆一波吧. 注意点 ss梯子大家自己准备好,不然连不上ins的,还有ins的一些反扒规则等等我就不一一列举了, 下面说下大概的几个点: instagram的首页数据是 服务端渲染的,所以首页出现的11或12条数据是以html中的一个j…
目录 一.文章详情展示 1 将侧边栏做成inclusion_tag 二.点赞点踩功能 三.评论功能 整体总结: 在出现bug的时候,先判断是前端bug还是后端bug,再判断bug错误类型,以及报错信息 如果出现bug但是没报错,可以通过后端用print分段代码,前端用consloe方式分段 大部分功能逻辑其实都是类似,比如点赞和评论,views都写到了判断是否登录,判断是否是ajax请求等等,真正展示功能特性的代码其实就两三行,所以要分清主次 前端注意的就是标签的查找,绑定事件的使用,标签属性的…
微信小程序--仿微信小程序朋友圈Pro(内容发布.点赞.评论.回复评论) 项目开源地址M朋友圈Pro 求个Star 项目背景 ​ 基于原来的开源项目 微信小程序仿朋友圈功能开发(发布.点赞.评论等功能)的基础上,终于推陈出新了. 有一说一,这次界面好看多了.至于推陈出新的原因很简单…
1.简单的实现评论功能 article_detail.html,拿到数据  由路--给视图函数--写入数据库 <p>评论内容:</p> <textarea name="></textarea> <p> <button class="btn btn-default comment_btn">提交评论</button> </p> urlpath("comment/"…
1.自定义标签 2.图片验证码 3.生成邮箱验证码.发送邮件 4.评论树实现 5.组合搜索(Q) 1.自定义标签 配置: a.在app中新建文件夹  templatetags,里面新建  xx.py文件(如tags.py) b.tags.py文件中: #自定义标签 from django import template register = template.Library() @register.simple_tag def render_app_name(admin_class): retu…
url配置 url(r'^commentTree/(?P<article_id>\d+)/',views.commentTree), url(r'^(?P<username>.*)/com', views.com), 视图: def commentTree(request,article_id): # 找到当前文章对应的所有的评论 comment_list = models.Comment.objects.filter(article_id=article_id).values(&…
1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=date2.getTime()-date1.getTime() //时间差的毫秒数 //计算出相差天数 var days=Math.floor(date3/(24*3600*1000)) //计算出小时数 var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数 va…
内容总结: 1. 内容回顾 1. 内容回顾 1.评论 1. 展示评论 1. 评论楼(Django模板语言渲染) 1. 从后端查询出所有的评论 2. 如果有父评论就展示父评论 2. 评论树 通过ajax在页面刷新的时候去拉取所有的评论 2. 发表评论 1. 发表评论(ajax提交) 1. 通过AJAX发送到后端 1. 判断是否是子评论 1. 给回复按钮绑定点击事件 1. 要给未来的标签绑定事件一定要用事件委托 事件委托利用的原理是事件冒泡 2. jQuery事件委托的写法: $("已经存在的标签&…
1.构造父子结构: 1.1需求样式 客户列表 customer_list /customer/list/ -----> 添加客户 customer_add /customer/add/ -----> 编辑客户 customer_edit /customer/edit/(?P<cid>\d+)/ -----> 删除客户 customer_del /customer/del/(?P<cid>\d+)/ -----> 批量导入客户 customer_import…
<h3>个人站点下的</h3> 知识点 url (r'(?P<username>\w+)/p/(?P<id>\d+)', xiangxi,name='xxx'),#文章详情页面 url (r'dianzhan/', dianzhan), #文章详情中点赞的一个接收ajax请求路由 url (r'pinlun/', pinlun), #文章详情中评论的一个接收ajax请求路由 url (r'(?P<username>\w+)/(?P<n>…
1.JSONP原理剖析以及实现 1.1 同源策略限制 用django分别建立两个项目,jsonp01和jsonp02,然后再在这两个项目里分别建立一个app,比如名字叫jsonp1.jsonp2:jsonp01的端口号是8005,jsonp02的端口号是8006. jsonp1的代码如下, setting做常规配置: urls.py, urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^testjsonp/', views.testj…
一.准备工作 1.创建数据库表articles,字段分别为: 序号 字段名称 字段类型 字段值 字段描述 备注说明 1 title string "标题1" 文章标题   2 description string "描述1" 文章描述   3 content string "进入迎峰度夏,受华东.华中.华南持续大范围高温天气影响,全国发用电量持续攀升.记者从国家发展改革委了解到,7月14日全国发电量达271.87亿千瓦时,创历史新高... 文章内容   4…