抽屉之Tornado实战(1)--分析与架构
抽屉之Tornado实战(1)--分析与架构
项目模拟地址:http://dig.chouti.com/
知识点应用:
AJAX 用于偷偷发请求
- 原生ajax
- jQuery ajax($.ajax)
- iframe伪造
上传文件
- 传统Form 弊端:会刷新页面 提醒:enctype=‘multiprt/form-data’记住这个特殊的设置
- ajax上传:FormData方式(不是所有的浏览器都支持),Form表单+iframe(兼容性好)
session 依赖cookie
验证码 基于session来做
Form验证
分页
数据库
- pymsql
- ORM
目录结构介绍
app.py 启动程序
config.py 配置文件
MVC
- models ORM数据相关--表类
- views 模板文件
- controllers 业务逻辑处理
backend
- uimethods.py Tornado扩展
- commobs.py 公共功能:生成随机字符串,加密...
- core request_handler.py 请求来时先做session这件事(一个父类)
- form 定义匹配规则的类(合法性验证)
- session
- utils 工具--分页、发邮件、验证码
其他
- statics 静态文件
- forms form表单验证相关的类(业务场景验证)

页面逻辑分析
注册
- 填写基本信息
- 发邮件获取验证码
- 验证通过,注册成功
登陆
- 用户名and密码 or 邮箱and密码 两种组合方式
- 生成随机验证码图片
- 验证通过,登陆成功(涉及数据库,要有一张用户表)
发布的信息
1、标题,2、内容,3、图片,4、类型,5、发布者,6、发布时间,7、URL地址
(涉及数据库,创建信息表,其实发布者又是用户表的,消息对发布者--多对一,一个人可以发布多条消息,类型也可以通过外键设置,所以有创建一个类型表)

点赞(多对多,又要建立一张点赞表)
- 一个人可以为多条信息点赞
- 一条信息也可以被多个人点赞
- 一个人不能为同一个信息点第二次赞(联合唯一索引)
评论
- 评论时,谁评论,评论时间,评论哪条消息,评论内容,评论设备
- 评论时,有对消息评论,也有回复某人(本质是针对某个人的某条评论)
最后这里还要有一张评论表
抽屉之Tornado实战(1)--分析与架构的更多相关文章
- Tornado之抽屉实战(1)--分析与架构
项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX 用于偷偷发请求 原生ajax jQuery ajax($.ajax) iframe伪造 上传文件 传统Form ...
- 抽屉之Tornado实战(9)--装饰器实现用户登录状态验证
当然今天讲的验证,不只Tornado会用,以后用到web框架都会用到,最常见的场景就是只有用户登陆了才能执行某些操作,所以在执行这些操作前要先做登陆状态的验证. 比如:点赞,发布,评论等需要验证,都需 ...
- 抽屉之Tornado实战(7)--form表单验证
在这里,我们把form表单验证的代码进行工具化了,以后稍微修改一下参数就可以拿来用了 先贴上代码 forms.py from backend.form import fields class Base ...
- 抽屉之Tornado实战(6)--session工厂(工厂方法模式)
我之前写的session一般保存在服务器的内存里,那可以保存在缓存,或是数据库,那问题来了,不同地方,保存方式是不同的,所以需要定义不同的类,cache/redis/memcached类 sessio ...
- 抽屉之Tornado实战(2)--数据库表设计
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 #一张表对应一个类 class ...
- 抽屉之Tornado实战(5)--点赞与评论树
点赞 点赞的过程:数字增加,并在后台点赞表记录数据 需要发过去的数据:用户id,新闻id 用户id从session里获得,那新闻id怎么获取呢?这想到分页是循环新闻列表来展示内容,循环的新闻id可以做 ...
- 抽屉之Tornado实战(4)--发帖及上传图片
对于链接,点击获取标题时,本质发送ajax请求,然后去链接抓取信息,发布又是发送ajax请求 发布信息,还要有发布者的信息,并在信息表需要记录发布者的用户名,发布者的头像,发布者的id,而这些信息可以 ...
- 抽屉之Tornado实战(3)--注册
知识点应用:标签绑定事件,jQuery获取用户值-->AJAX发送数据-->后台路由系统-->业务逻辑处理-->ORM数据操作-->write返回-->AJAX回调 ...
- Tornado实战
抽屉之Tornado实战(1)--分析与架构 抽屉之Tornado实战(2)--数据库表设计 抽屉之Tornado实战(3)--注册 抽屉之Tornado实战(4)--发帖及上传图片 抽屉之Torna ...
随机推荐
- 【Java多线程】JDK1.5并发包API杂谈
并发与并行 并发 一个或多个处理器执行更多的任务(通过划分时间片来执行更多的任务),从逻辑上实现同时运行: 如,N个并发请求在一个两核CPU上: 并行 N个处理器分别同时执行N个任务,从物理上实现同时 ...
- linux每日命令(14):less命令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...
- Asp.Net T4模板生成三层架构
1.T4 Editor安装 T4:根据模板生成文件,例如model等 vs中默认t4模板编码是没有提示和高亮的,需使用以下插件,免费的 https://t4-editor.tangible-engin ...
- Emacs常用基本操作
按键约定 组合按键 Emacs中大量的按键操作都是各式各样的组合按键(快捷键),下面是几种通常的约定: Ctrl键:表示为C Alt键:表示为M Shift键:表示为S 组合按键:比如向下移动一行的组 ...
- 使用C#+Linq+SQL快速开发业务
C#开发桌面程序的效率确实很高,今天就来总结下如何使用C#+Linq+SQL快速开发一个新的业务系统. Linq是微软官方的轻量级的ORM工具,使用它结合SQL可以快速的生成实体类,再通过Linq操作 ...
- 工具链接redis
RedisDesktopManager 链接 文件位置 /usr/loca/redis/etc/redis.conf 一.注释redis.conf文件中的:bind 127.0.0.1(在一段文字之前 ...
- vue返回上一页面如果没有上一页面返回首页
methods: { back(){ if (window.history.length <= 1) { this.$router.push({path:'/'}) return false } ...
- SSM框架整合搭建教程
自己配置了一个SSM框架,打算做个小网站,这里把SSM的配置流程详细的写了出来,方便很少接触这个框架的朋友使用,文中各个资源均免费提供! 一. 创建web项目(eclipse) File-->n ...
- SQL中in参数在存储过程中传递及使用的方法
背景: 1.使用存储过程 2.存储过程中有in 3.in括号里面的内容作为参数传递 解决方案: 1.直接拼接sql 可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval PROCEDUR ...
- Android文档-开发者指南-第一部分:入门-中英文对照版
发布的博客,排版太不行了,整理下发在百度盘上了: 第一部分:Introduction(入门) 0.Introduction to Android(引进到Android) 1.Application F ...