抽屉之Tornado实战(1)--分析与架构

项目模拟地址:http://dig.chouti.com/

知识点应用:

  • AJAX  用于偷偷发请求

  1. 原生ajax
  2. jQuery  ajax($.ajax)
  3. iframe伪造
  • 上传文件

  1. 传统Form 弊端:会刷新页面   提醒:enctype=‘multiprt/form-data’记住这个特殊的设置
  2. ajax上传:FormData方式(不是所有的浏览器都支持),Form表单+iframe(兼容性好)
  • session  依赖cookie

  • 验证码   基于session来做

  • Form验证

  • 分页

  • 数据库

  1. pymsql
  2. ORM

目录结构介绍

  • app.py  启动程序

  • config.py  配置文件

  • MVC

  1. models  ORM数据相关--表类
  2. views  模板文件
  3. controllers  业务逻辑处理
  • backend

  1. uimethods.py   Tornado扩展
  2. commobs.py   公共功能:生成随机字符串,加密...
  3. core   request_handler.py  请求来时先做session这件事(一个父类)
  4. form 定义匹配规则的类(合法性验证)
  5. session
  6. utils  工具--分页、发邮件、验证码
  • 其他

  1. statics  静态文件
  2. forms  form表单验证相关的类(业务场景验证)

页面逻辑分析

  • 注册

  1. 填写基本信息
  2. 发邮件获取验证码
  3. 验证通过,注册成功
  • 登陆

  1. 用户名and密码   or    邮箱and密码  两种组合方式
  2. 生成随机验证码图片
  3. 验证通过,登陆成功(涉及数据库,要有一张用户表)
  • 发布的信息

  1、标题,2、内容,3、图片,4、类型,5、发布者,6、发布时间,7、URL地址

  (涉及数据库,创建信息表,其实发布者又是用户表的,消息对发布者--多对一,一个人可以发布多条消息,类型也可以通过外键设置,所以有创建一个类型表)

  • 点赞(多对多,又要建立一张点赞表)

  1. 一个人可以为多条信息点赞
  2. 一条信息也可以被多个人点赞
  3. 一个人不能为同一个信息点第二次赞(联合唯一索引)
  • 评论

  1. 评论时,谁评论,评论时间,评论哪条消息,评论内容,评论设备
  2. 评论时,有对消息评论,也有回复某人(本质是针对某个人的某条评论)

  最后这里还要有一张评论表

原文地址:https://www.cnblogs.com/zcok168/p/9796930.html

时间: 2024-11-08 18:33:41

抽屉之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验证 分页 数

抽屉之Tornado实战(9)--装饰器实现用户登录状态验证

当然今天讲的验证,不只Tornado会用,以后用到web框架都会用到,最常见的场景就是只有用户登陆了才能执行某些操作,所以在执行这些操作前要先做登陆状态的验证. 比如:点赞,发布,评论等需要验证,都需要用到if self.session['is_login']进行判断,你可能觉得,这代码也不多啊,不过一旦网站大了,场景多了,可以写到你手抽筋,其实我们可以在执行post方法或get方法之前进行登陆状态的验证,用装饰器进行这么一个功能扩充就可以了 decrator.py #处理刷新页面的请求 def

抽屉之Tornado实战(2)--数据库表设计

经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 #一张表对应一个类 class UserInfo(Base): #把表名赋给静态字段 __tablename__ = 'userinfo' #序号nid,用户名username,密码password,邮箱email,创建时间ctime #一行数据就是一个对象 nid = Column(Integer, primary_key=T

抽屉之Tornado实战(6)--session工厂(工厂方法模式)

我之前写的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

抽屉之Tornado实战(7)--form表单验证

在这里,我们把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

抽屉之Tornado实战(4)--发帖及上传图片

对于链接,点击获取标题时,本质发送ajax请求,然后去链接抓取信息,发布又是发送ajax请求 发布信息,还要有发布者的信息,并在信息表需要记录发布者的用户名,发布者的头像,发布者的id,而这些信息可以通过session获得(前提是设置session要设置了这些信息) 对于文字,没什么好说的,就一个发布时需要发送ajax请求 对于图片,选择图片和上传图片一起做,即选择完图片,图片就上传到后台,并且在页面上展示图片效果,本质上也是偷偷发请求,而且绑定不是常见的onclick事件,而是onchange

抽屉之Tornado实战(3)--注册

知识点应用:标签绑定事件,jQuery获取用户值-->AJAX发送数据-->后台路由系统-->业务逻辑处理-->ORM数据操作-->write返回-->AJAX回调函数接收-->页面效果显示 第一步:我们要给前端的获取验证码按钮绑定一个onclick事件--发送邮件验证码 找到views下home  index.html找到标签,onclick=SendCode(this) 定义事件,获取邮箱,发送ajax请求 jQuery代码如下: function SendC

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

点赞 点赞的过程:数字增加,并在后台点赞表记录数据 需要发过去的数据:用户id,新闻id 用户id从session里获得,那新闻id怎么获取呢?这想到分页是循环新闻列表来展示内容,循环的新闻id可以做为参数传入事件中(在事件里发送ajax请求),看前端代码: <div class="content-list" id="content_list"> {% for item in new_list %} <div class="item&qu

Tornado实战

抽屉之Tornado实战(1)--分析与架构 抽屉之Tornado实战(2)--数据库表设计 抽屉之Tornado实战(3)--注册 抽屉之Tornado实战(4)--发帖及上传图片 抽屉之Tornado实战(5)--点赞与评论树 抽屉之Tornado实战(6)--session工厂(工厂方法模式) 抽屉之Tornado实战(7)--form表单验证 抽屉之Tornado实战(8)--发布新闻 抽屉之Tornado实战(9)--装饰器实现用户登录状态验证