Tornado框架中视图模板Template的使用
上文的程序中有这样一段:
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的使用的更多相关文章
- laravel5.5框架中视图间如何共享数据?视图间共享数据的两种方法
laravel框架中视图间共享数据有两种,一种是用视图门面share()方法实现,另一种是用视图门面composer() 方法实现,那么,两种方法的实现究竟是怎样的呢?让我们来看一看接下来的文章内容. ...
- Laravel5.4框架中视图共享数据的方法详解
本文实例讲述了Laravel5.4框架中视图共享数据的方法.分享给大家供大家参考,具体如下: 每个人都会遇到这种情况:某些数据还在每个页面进行使用,比如用户信息,或者菜单数据,最基本的做法是在每个视图 ...
- Django框架简介及模板Template,filter
Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View) ...
- AngularJS学习--- AngularJS中的模板template和迭代器过滤filter step2 step3
1.AngularJS 模板---step2: mvc(Model-View-Controller)模式在后端用的比较多,在前端也是一样的常用; 在AngularJS中,一个视图是模型通过HTML模板 ...
- 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义
代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...
- Laravel框架中Blade模板的用法
1. 继承.片段.占位.组件.插槽 1.1 继承 1.定义父模板 Laravel/resources/views/base.blade.php 2.子模板继承 @extends('base') 1.2 ...
- 在laravel框架中使用模板继承来进行更方便的布局
html中有很多东西是重复的,这是需要用到laravel的模板继承,来完成这样的简化操作. 父模板 既然时模板继承,那么就首先有一个父模板,父模板类似网页html中的头部和尾部,但又有一些不一样. / ...
- tornado框架中redis使用
一.安装依赖 pip3 install tornado-redis 二.导入模块 import tornadoredis 三.创建redis对象 import tornadoredis CONNECT ...
- tornado框架&三层架构&MVC&MTV&模板语言&cookie&session
web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado这样的框架. 有一些框架则只包含业务逻辑处理, 例如Django, bottle, flask这些框架, 它们的使 ...
随机推荐
- 好文分享_java堆栈的区别
Java Heap Memory Heap memory is used by java runtime to allocate memory to Objects and JRE classes. ...
- 杨氏矩阵定义及其查找的实现C++
先介绍一下这个数据结构的定义,Young Tableau有一个m*n的矩阵,然后有一数组 a[k], 其中 k<=m*n ,然后把a[k]中的数填入 m*n 的矩阵中,填充规则为: 1. 每一 ...
- Maven 配置远程仓库
最近要用到一个包:spark-1.6.0-cdh5.8.2,在https://mvnrepository.com网站上搜到该包的pom.xml语句.但是看到下面有这样一句话: 该包在图中所述repos ...
- 疑难问题解决备忘录(2)——ubuntu12.04分配swap
分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文 ...
- 【转】《从入门到精通云服务器》第七讲—负载均衡和CDN技术
在IDC知识中,我们常常会遇上负载均衡与CDN的概念而不知所云.第一讲[什么是云计算], 我们提到过负载均衡,仅给大家留下了印象.这次我们将深入浅出的讲讲到底什么是负载均衡与CDN技术.---互联网数 ...
- android 5.0以上通知栏、状态栏图标变成白色
在5.0以上的系统上发现,平常的自定义notification出来的icon,居然在状态栏上变成了纯白色的icon. 看源代码会发现: protected void applyColorsAndBac ...
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
http://blog.csdn.net/junjieking/article/details/6277836?reload这位楼主的问题,我也遇到了,但是我按照他那样操作并没有解决问题,弄了好久终于 ...
- 李洪强经典面试题152-Runtime
李洪强经典面试题152-Runtime Runtime Runtime是什么 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码, ...
- 异常处理_Maven之web项目java.lang.LinkageError
浏览器运行项目异常如下: HTTP Status 500 - type Exception report message description The server encountered an i ...
- C#时间戳转换
,,)).ToUniversalTime ().Ticks ) / ;//先取得当前的UTC时间,然后转换成计算用的周期数(简称计时周期数),每个周期为100纳钞(ns)=0.1微秒(us)=0.00 ...