作者:the5fire | 标签: MVC  tornado  | 发布:2012-08-06 2:41 p.m.

文接上篇,看我一个简单的helloworld,虽然觉得这个框架着实精小,但是实际开发总不能这么用。所以还是应该按照实际开发来写一个helloworld。

既然是实际项目版的helloworld,那就要有组织结构,不能代码都塞在一个文件里。

大体结构如下:

  1. mvc_helloworld
  2. --__init__.py
  3. --urls.py
  4. --application.py
  5. --server.py
  6. --handlers
  7. ----__init__.py
  8. ----index.py
  9. --model
  10. ----__init__.py
  11. ----entity.py
  12. --static
  13. ----css
  14. ------index.css
  15. ----js
  16. ----img
  17. --templates
  18. ----index.html

这是一个简单的mvc结构,通过urls.py来控制访问,通过handlers来处理所有的访问,通过model来处理持久化的内容。剩下的static和templates就不用说了。另外可以通过在model和handlers之间增加cache层来提升性能。

下面逐一给出实例代码: server.py,用来启动web服务器:

  1. #coding:utf-8
  2.  
  3. import tornado.ioloop
  4. import sys
  5.  
  6. from application import application
  7.  
  8. PORT = '8080'
  9.  
  10. if __name__ == "__main__":
  11. if len(sys.argv) > 1:
  12. PORT = sys.argv[1]
  13. application.listen(PORT)
  14. print 'Development server is running at http://127.0.0.1:%s/' % PORT
  15. print 'Quit the server with CONTROL-C'
  16. tornado.ioloop.IOLoop.instance().start()

application.py,可以作为settings:

  1. #coding:utf-8
  2. #author:the5fire
  3.  
  4. from urls import urls
  5.  
  6. import tornado.web
  7. import os
  8. SETTINGS = dict(
  9. template_path=os.path.join(os.path.dirname(__file__), "templates"),
  10. static_path=os.path.join(os.path.dirname(__file__), "static"),
  11. )
  12.  
  13. application = tornado.web.Application(
  14. handlers = urls,
  15. **SETTINGS
  16. )

urls.py:

  1. #coding:utf-8
  2.  
  3. from handlers.index import MainHandler
  4.  
  5. urls = [
  6. (r'/', MainHandler),
  7. ]

handlers/index.py:

  1. #coding:utf-8
  2.  
  3. import tornado.web
  4. from model.entity import Entity
  5.  
  6. class MainHandler(tornado.web.RequestHandler):
  7. def get(self):
  8. entity = Entity.get('the5fire\'s blog')
  9. self.render('index.html', entity = entity)

model/entity.py:

  1. #coding:utf-8
  2.  
  3. class Entity(object):
  4. def __init__(self, name):
  5. self.name = name
  6.  
  7. @staticmethod
  8. def get(name):
  9. return Entity(name)

templates/index.html:

  1. <!DOCYTYPE html>
  2. <html>
  3. <head>
  4. <meta type="utf-8">
  5. <title>首页</title>
  6. <link href="/static/css/index.css" media="screen" rel="stylesheet" type="text/css"/>
  7. </head>
  8. <body>
  9. <h1>Hello, tornado World!</h1>
  10. <h2>by <a href="http://www.the5fire.com" target="_blank">{{entity.name}}</a></h2>
  11. </body>
  12. </html>

static/css/index.css:

  1. /**
  2. author:the5fire
  3. **/
  4.  
  5. body {
  6. background-color:#ccc;
  7. }

大体上就这些,当然所有的东西都不是不可变的,应该按照自己的喜好来写。 最后运行的时候通过:python server.py 8000 代码可以在线查看,我的github库,有很多代码哦:https://github.com/the5fire/practice_demo/tree/master/learn_tornado/mvc_hello

初学tornado之MVC版helloworld的更多相关文章

  1. .Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统

    项目名称:学生信息管理系统1.0 后台框架:.Net Core 3.1 + EF Core    yrjw.ORM.Chimp 前端框架:ASP.NET Core MVC  +  LayUI + Bo ...

  2. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...

  3. 红包项目总结---MVC版

    起因: 针对传统版的明显缺陷做优化.主要是提升可维护性. 效果  线上:  未发布 线下:http://10.27.5.1/svn/FED/code/hongbao/year-end   hb-fac ...

  4. Java飞机大战MVC版

    PlaneWar Java飞机大战MVC版 //无聊时偷的雷霆战机素材写了一个飞机大战,本意是练习mvc,但写得还是不清晰 github下载:https://github.com/dejavudwh/ ...

  5. Delphi_01_控制台版HelloWorld

    对于Windows下的控制台编程,我相信很多人都不陌生.而C语言开始的著名的“Hello world”程序基本是学习编程的第一步.我想对于 RAD开发,大家熟悉的一般都是GUI编程,而对于consol ...

  6. 初学C#和MVC的一些心得,弯路,总结,还有教训(2)--关于Entity Framework

    看了一堆视频教程后,感觉基本了解的差不多了,可以动手.....因为最好的学习方法就是实践嘛.... 所以打算从网站做起,在WebForm和MVC之间选了MVC,因为感觉高大上...也比较灵活 于是买了 ...

  7. Qt版helloworld

    跟学别的编程语言一样,Qt也不例外,一开始就想写一个helloworld.初学Qt十几天,看了一点关于Qt视频的介绍和书上的基础知识,对于Qt写工程的概念有了初步的认识,就代码的形式来说,Qt Cre ...

  8. java之spring mvc之helloworld

    这篇主要讲解springmvc的基本的使用,这里以helloworld项目为例. 目录结构: 1. 新建 web 项目 :springmvc_helloworld 2. 在 WebRoot\WEB-I ...

  9. 动态生成验证码———MVC版

    上面有篇博客也是写的验证码,但那个是适用于asp.net网站的. 今天想在MVC中实现验证码功能,弄了好久,最后还是看博友文章解决的,感谢那位博友. 首先引入生成验证码帮助类. ValidateCod ...

随机推荐

  1. ionic2 页面加载时图片添加的问题

    使用ionic2创建项目时,在app文件夹下有图片目录img 在home中引用图片,但是不论是用ng-src或者是src,代码如下: <ion-list> <ion-slides c ...

  2. JS增删改HTML表格

    要求如下: 写一个html页面,里面有一个表格,储存用户信息,包括:用户名,密码,姓名,邮箱,电话,qq,身份证号. 现在要通过js对表格进行动态的增删改查(只是内存操作即可): 首先,加载页面时用j ...

  3. 《CDN web加速代理》RHEL6

    CDN加速代理环境的测试:192.168.1.这个网段是可以上网的,2网段不可以上网 一台apache服务器 :配置 只安装apche服务 IP 192.168.1.59 一台双网卡的服务器 :只安装 ...

  4. Android String format 通过value 下的string.xml 文件

    <string name="format_coordinate" formatted="false">%s %d° %d\' %d\" % ...

  5. MDX : Non Empty v/s NonEmpty

    MDX : Non Empty v/s NonEmpty User Rating: / 50 PoorBest Written by Jason Thomas    Friday, 07 May 20 ...

  6. 重拾C,一天一点点

    数据类型及长度 char        字符型,占用一个字节 int          整型,通常代表特定机器中整数的自然长度 short       16位 int         16位或32位 ...

  7. Webserver issues | PHP manager for IIS

    4 down vote accepted In order to successfully install the PHP manager for IIS 8, you need the .NET 3 ...

  8. How to understand ReferenceGroup control on Form[AX2012]

    在AX2012的Form开发中,微软引入了新的控件ReferenceGroup,它用在Lookup其他表RecId的时候显示更人性化的字段,它的使用还必须从表的索引说起.AX2012的表有这些索引(h ...

  9. IOC学习

    控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...

  10. C# Winfrom小黄鸡功能调用

    最近研究微信公众平台,搭建了一个微信聊天机器人,调用小黄鸡的公众接口,实现在线和小黄鸡聊天的功能. 接口调用不是很麻烦,不过是php版本,所以研究了一下C#的功能模块, Winfrom版 后台界面代码 ...