上文的程序中有这样一段:

class MessageHandler(tornado.web.RequestHandler):
def get(self):
self.write('''
<html>
<head>
<title>Please Input Message</title>
</head>
<body>
<form action="/message" method="post">
<input type="text" name="message"><br>
<input type="submit" value="submit">
</form>
</body>
</html>'''
)
def post(self):
#self.set_header("Content-Type", "text/plain")
self.write("You wrote <h1>" + self.get_argument("message") + "</h1>")

当收到GET请求时,返回一段HTML表单。

上面的这种写法,将html写在python代码中,灵活性差,而且view代码与controller代码混合在一块,不符合MVC的原则。

所以我们采用Tornado中的模板。

新建form.html:

<html>
<head>
<title>{{title}}</title>
</head>
<body>
<form action="/message" method="post">
<input type="text" name="message" value="please input.">
<input type="submit" value="submit">
</form>
</body>
</html>

然后将上面的python代码修改为:

 

class MessageHandler(tornado.web.RequestHandler):
def get(self):
self.render("form.html", title="Input Message")
def post(self):
#self.set_header("Content-Type", "text/plain")
self.write("You wrote <h1>" + self.get_argument("message") + "</h1>")

这样代码简洁了很多。

 

完整的代码是:

import tornado.ioloop
import tornado.web class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("<h1>This is Home Page!</h1>") class StoryHandler(tornado.web.RequestHandler):
def get(self, story_id):
self.write("You request the story <h1>" + story_id + "</h1>") class MessageHandler(tornado.web.RequestHandler):
def get(self):
self.render("form.html", title="Input Message")
def post(self):
#self.set_header("Content-Type", "text/plain")
self.write("You wrote <h1>" + self.get_argument("message") + "</h1>") application = tornado.web.Application([
(r"/", MainHandler),
(r"/story/([0-9]+)", StoryHandler),
(r"/message", MessageHandler),
]) if __name__ == '__main__':
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

Tornado框架中视图模板Template的使用的更多相关文章

  1. laravel5.5框架中视图间如何共享数据?视图间共享数据的两种方法

    laravel框架中视图间共享数据有两种,一种是用视图门面share()方法实现,另一种是用视图门面composer() 方法实现,那么,两种方法的实现究竟是怎样的呢?让我们来看一看接下来的文章内容. ...

  2. Laravel5.4框架中视图共享数据的方法详解

    本文实例讲述了Laravel5.4框架中视图共享数据的方法.分享给大家供大家参考,具体如下: 每个人都会遇到这种情况:某些数据还在每个页面进行使用,比如用户信息,或者菜单数据,最基本的做法是在每个视图 ...

  3. Django框架简介及模板Template,filter

    Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View) ...

  4. AngularJS学习--- AngularJS中的模板template和迭代器过滤filter step2 step3

    1.AngularJS 模板---step2: mvc(Model-View-Controller)模式在后端用的比较多,在前端也是一样的常用; 在AngularJS中,一个视图是模型通过HTML模板 ...

  5. 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义

    代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...

  6. Laravel框架中Blade模板的用法

    1. 继承.片段.占位.组件.插槽 1.1 继承 1.定义父模板 Laravel/resources/views/base.blade.php 2.子模板继承 @extends('base') 1.2 ...

  7. 在laravel框架中使用模板继承来进行更方便的布局

    html中有很多东西是重复的,这是需要用到laravel的模板继承,来完成这样的简化操作. 父模板 既然时模板继承,那么就首先有一个父模板,父模板类似网页html中的头部和尾部,但又有一些不一样. / ...

  8. tornado框架中redis使用

    一.安装依赖 pip3 install tornado-redis 二.导入模块 import tornadoredis 三.创建redis对象 import tornadoredis CONNECT ...

  9. tornado框架&三层架构&MVC&MTV&模板语言&cookie&session

    web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado这样的框架. 有一些框架则只包含业务逻辑处理, 例如Django, bottle, flask这些框架, 它们的使 ...

随机推荐

  1. C#获取当前程序运行路径的方法集合

    //获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...

  2. 窗体Showmedol 遇到的奇怪异常-->进阶问题

    procedure SetTransparentForm (popupFrm:TForm;Color:TColor;AlphaBlendValue:Integer); var FrmTranspare ...

  3. SQL Server 2012 数据库数据导出为脚本

    转自:http://blog.csdn.net/ituff/article/details/8265822 将高版本的的SQL Server数据库移到低版本的SQL Server是一件十分蛋疼的事,最 ...

  4. 2016 Multi-University Training Contests

    2016 Multi-University Training Contest 1 2016 Multi-University Training Contest 2 2016 Multi-Univers ...

  5. Node.js-中文分词【1】-node-segment

    node-segment是基于盘古分词写的Node.js中文分词模块,鉴于盘古分词给我留下的好印象,我们在Node.js上选择了它 一.安装node-segment npm install -g se ...

  6. HDU5909 Tree Cutting(树形DP + FWT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T with n ve ...

  7. JAVA正则表达式中如何匹配反斜杠 \

    有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...

  8. ps教程连接

    教程1:http://www.68ps.com/jc/ps_tp.asp 教程2:http://www.3lian.com/edu/photoshop/

  9. d8fs9f

    你好 - Helloworld 1. a 2. b 3. c 来自为知笔记(Wiz)

  10. 扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常

    在做界面程序时,常常需要一些数据类,界面元素通过绑定等方式显示出数据,然而由于UI线程不是线程安全的,一般都需要通过Invoke等方式来调用界面控件.但对于数据绑定bindingList而言,没法响应 ...