Github地址: day0

初始化数据库:

jakeychen@JC:~/Public/tornado_todo$ pwd
/home/jakeychen/Public/tornado_todo
jakeychen@JC:~/Public/tornado_todo$ mysql -u root -p < todo.sql

输入密码 Aa123456 (假设你设置的密码为这个),完成mysql的初始化。

运行程序:

jakeychen@JC:~/Public/tornado_todo$ python srv.py

在浏览器(Chrome)查看运行效果:

尝试新增几个todo看一下效果:

标记为完成:

这样一个简单的待办事项就运行起来了

目前的项目大致结构:

tornado_todo/
├── application.py
├── conf
│   ├── config.yaml
│   └── logging.yaml
├── handlers
│   ├── base.py
│   ├── delete.py
│   ├── edit.py
│   ├── finish.py
│   ├── index.py
│   ├── __init__.py
│   └── new.py
├── logs
│   ├── all.log
│   ├── ingenia.log
│   └── warn.log
├── README.md
├── srv.py
├── static
│   ├── css
│   │   ├── app.css
│   │   └── normalize.css
│   ├── images
│   │   ├── favicon.ico
│   │   ├── ok.gif
│   │   └── tornado.png
│   └── js
├── templates
│   ├── base.html
│   ├── edit.html
│   └── index.html
├── todo.sql
└── url.py

1. application.py 一些配置设置

 # coding:utf-8

 import os
import uuid
import base64 import tornado.web settings = dict(
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
xsrf_cookies=True,
cookie_secret=base64.b64encode(uuid.uuid4().bytes+uuid.uuid4().bytes),
login_url="/login",
debug=True,
)

2. url.py 记录URL和映射的类

 # coding:utf-8

 url = [(r"^/", "handlers.index.IndexHandler")]

 url += [(r"^/todo/new", "handlers.new.NewHandler")]

 url += [(r"^/todo/(\d+)/edit", "handlers.edit.EditHandler")]

 url += [(r"^/todo/(\d+)/delete", "handlers.delete.DeleteHandler")]

 url += [(r"^/todo/(\d+)/finish", "handlers.finish.FinishHandler")]

3. todo.sql 初始化mysql

 # $  mysql -u root -p < mysql_create.sql
# Aa123456 drop database if exists tornado_todo; create database tornado_todo; GRANT ALL ON tornado_todo.* TO 'tornado' IDENTIFIED BY ''; use tornado_todo; create table todo (
`id` mediumint not null auto_increment,
`todo_text` varchar(50) not null,
`finished` bool not null default 0,
`post_date` datetime not null default now(),
primary key (`id`)
) engine=innodb default charset=utf8;

4. handlers/ 请求的各个类

5. static/ 静态文件

6. templates/ html文件

7. conf/ 配置文件

8. logs/ 存放log文件

Todo:

1. 使用jquery,分离出所有的css和js。

2. 使用sqlalchemy改写数据库操作。

 

[1] Tornado Todo Day0的更多相关文章

  1. [0] Tornado Todo 开篇

    参考自: python: tornado例子 Github地址:tornado_todo 开发环境: Python包的安装: 首先安装 pip: sudo apt-get install python ...

  2. TODO List - 任务表

    TODO List - 任务表 Angular1 --> Ionic1 --> Vue --> Weex Python --> Django --> Tornado -- ...

  3. web框架 之 Tornado

    初识 Tornado : tornado web server 是使用python编写出来的一个轻量级.高可伸缩性和非阻塞IO的Web服务器软件,其特点是采用epoll非阻塞IO,相应快速,可处理数千 ...

  4. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  5. Tornado 异步客户端

    前言 Tornado是很优秀的非阻塞式服务器,我们一般用它来写Web 服务器,据说知乎就是用Tornado写的. 如果对tornado源码不是很了解,可以先看一下另一篇文章: http://yunji ...

  6. tornado框架之路二

    二.路由系统 路由系统其实就是 url 和 类 的对应关系,这里不同于其他框架,其他很多框架均是 url 对应 函数,Tornado中每个url对应的是一个类. #!/usr/bin/env pyth ...

  7. tornado简单的验证码

    1.html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 深入tornado中的http1connection

    前言 tornado中http1connection文件的作用极其重要,他实现了http1.x协议. 本模块基于gen模块和iostream模块实现异步的处理请求或者响应. 阅读本文需要一些基础的ht ...

  9. tornado web高级开发项目

    抽屉官网:http://dig.chouti.com/ 一.配置(settings) settings = { 'template_path': 'views', #模板文件路径 'static_pa ...

随机推荐

  1. C C++ OC iOS面试重点问题(一)

    C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量?  ...

  2. nginx+uwsgi+flask搭建python-web应用程序

    Flask本身就可以直接启动HTTP服务器,但是受限于管理.部署.性能等问题,在生产环境中,我们一般不会使用Flask自身所带的HTTP服务器. 从现在已有的实践来看,对于Flask,比较好的部署方式 ...

  3. 酷狗、QQ、天天动听——手机音乐播放器竞品对比

    如果说什么艺术与人们生活最贴近,那应该属音乐了,因此当代人不离身的手机里必然会有自己喜欢的音乐播放器APP存在. 在当今无论PC端还是手机端音乐播放器都越来越同质化,我们应该选择哪款手机音乐播放器?它 ...

  4. Oracle 存储过程,临时表,动态SQL测试

    --创建事务级别的结果临时表 create global temporary table tmp_yshy( c1 ), c2 ) )on commit delete rows; --创建事务级别的存 ...

  5. GDB调试GCC(jRate)

    1.前提是build GCC的时候要修改makefile,在configure之后生成的makefile忠,将CFLAGS和CFLAGS_FOR_BUILD改成-g3 -O0.. 2.在root用户下 ...

  6. docker 1.10.3 里php出现 curl 56错误码问题解决

    http://www.cnblogs.com/fengwei/p/5899018.html

  7. 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)

    类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...

  8. bzoj3174 [Tjoi2013]拯救小矮人

    Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...

  9. [置顶] android之存储篇_SQLite数据库_让你彻底学会SQLite的使用

    SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中 ...

  10. c语言结构体5之匿名结构体

    注意: 1匿名结构体不会出现重合 重命名的情况 2有名结构体 名称不能相同 也就是不能重名 //匿名结构体不会出现重名的情况 struct //无名结构体 { ]; ]; int num; };//不 ...