tornado的学习——第二章(模板与表单)

  链接:http://demo.pythoner.com/itt2zh/ch2.html

  来到了第二章;模板与表单

 1 # -*- coding:utf-8 -*-
 2
 3 __author__ = ‘roy‘
 4
 5 import os.path
 6
 7 import tornado.httpserver
 8 import tornado.ioloop
 9 import tornado.options
10 import tornado.web
11
12 from tornado.options import define, options
13
14 define("port", default=8000, help="run on the given port", type=int)
15
16
17 class IndexHandler(tornado.web.RequestHandler):
18     def get(self):
19         self.render(‘index.html‘)
20
21
22 class PoemPageHandler(tornado.web.RequestHandler):
23     def post(self):
24         noun1 = self.get_argument(‘noun1‘)
25         noun2 = self.get_argument(‘noun2‘)
26         verb = self.get_argument(‘verb‘)
27         noun3 = self.get_argument(‘noun3‘)
28         self.render(‘poem.html‘, roads=noun1, wood=noun2, made=verb,
29                     difference=noun3)
30
31
32 if __name__ == ‘__main__‘:
33     tornado.options.parse_command_line()
34     app = tornado.web.Application(
35         handlers=[(r‘/‘, IndexHandler), (r‘/poem‘, PoemPageHandler)],
36         # 模板的路径
37         template_path=os.path.join(os.path.dirname(__file__), "templates")
38     )
39     # 服务器
40     http_server = tornado.httpserver.HTTPServer(app)
41     http_server.listen(options.port)
42     tornado.ioloop.IOLoop.instance().start()

(1)os.path

template_path=os.path.join(os.path.dirname(__file__), "templates"):获取templates的路径

os.path.dirname(__file__):输出本文件的完整路径

os.path.join:链接两个文件名地址

(2)render:渲染模板

 1 <!DOCTYPE html>
 2 <html>
 3     <head><title>Poem Maker Pro</title></head>
 4     <body>
 5         <h1>Enter terms below.</h1>
 6         <form method="post" action="/poem">
 7         <p>Plural noun<br><input type="text" name="noun1"></p>
 8         <p>Singular noun<br><input type="text" name="noun2"></p>
 9         <p>Verb (past tense)<br><input type="text" name="verb"></p>
10         <p>Noun<br><input type="text" name="noun3"></p>
11         <input type="submit">
12         </form>
13     </body>
14 </html>
 1 <!DOCTYPE html>
 2 <html>
 3     <head><title>Poem Maker Pro</title></head>
 4     <body>
 5         <h1>Your poem</h1>
 6         <p>Two {{roads}} diverged in a {{wood}}, and I—<br>
 7 I took the one less travelled by,<br>
 8 And that has {{made}} all the {{difference}}.</p>
 9     </body>
10 </html>

(3)tornado的变量里面可以带表达式;标签基本是一样的

(4)static_url 生成静态的 URL

 1 # -*- coding:utf-8 -*-
 2
 3 import os.path
 4 import random
 5
 6 import tornado.httpserver
 7 import tornado.ioloop
 8 import tornado.options
 9 import tornado.web
10
11 from tornado.options import define, options
12
13 define("port", default=8000, help="run on the given port", type=int)
14
15
16 class IndexHandler(tornado.web.RequestHandler):
17     def get(self):
18         self.render(‘index.html‘)
19
20
21 class MungedPageHandler(tornado.web.RequestHandler):
22     def map_by_first_letter(self, text):
23         mapped = dict()
24         for line in text.split(‘\r\n‘):
25             for word in [x for x in line.split(‘ ‘) if len(x) > 0]:
26                 if word[0] not in mapped: mapped[word[0]] = []
27                 mapped[word[0]].append(word)
28         return mapped
29
30     def post(self):
31         source_text = self.get_argument(‘source‘)
32         text_to_change = self.get_argument(‘change‘)
33         source_map = self.map_by_first_letter(source_text)
34         change_lines = text_to_change.split(‘\r\n‘)
35         self.render(‘munged.html‘, source_map=source_map, change_lines=change_lines,
36                     choice=random.choice)
37
38
39 if __name__ == ‘__main__‘:
40     tornado.options.parse_command_line()
41     app = tornado.web.Application(
42         handlers=[(r‘/‘, IndexHandler), (r‘/poem‘, MungedPageHandler)],
43         template_path=os.path.join(os.path.dirname(__file__), "templates"),
44         # 静态文件的路径
45         static_path=os.path.join(os.path.dirname(__file__), "static"),
46         # debug 开启
47         debug=True
48     )
49     http_server = tornado.httpserver.HTTPServer(app)
50     http_server.listen(options.port)
51     tornado.ioloop.IOLoop.instance().start()
时间: 2024-08-07 17:01:00

tornado的学习——第二章(模板与表单)的相关文章

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

bootstrap学习笔记一 登录水平表单

先上效果图: 样式定义: <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="UserName">用户名</label> <div class="controls"> <input type="tex

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Bootstrap快速学习笔记(2)表单系列之二

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之二 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: 表单控件大小 表单控件状态 按钮 图像 详细介绍 表单控件大小表单控件大小可以通过给表单控件添加class类来实现,如果想要比较大,则添加input-lg类,如果想要比较小, 则添加input-sm类,但这仅是对高度进行了处理,如果要对宽度进行处理,需要在每个input控件外围添加div容器并带有col-xs-4类,并 且要在这组控件的外围

Bootstrap快速学习笔记(2)表单系列之一

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之一 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: .form-control类 水平表单 内联表单 详细介绍 form-control类把该类直接添加到控件上: 1.宽度变成了100%:2.设置了一个浅灰色(#ccc)的边框:3.具有4px的圆角:4.设置阴影效果,并且元素得到焦点之时,阴影和边框效果会有所变化:5.设置了placeholder的颜色为#999 水平表单最外层form标签要

html+css学习笔记 5[表格、表单]

表格 -- 默认样式重置 表格标签:     table 表格     thead 表格头     tbody 表格主体     tfoot 表格尾     tr 表格行     th 元素定义表头     td 元素定义表格单元 表格样式重置 table{border-collapse:collapse;} 单元格间隙合并 th,td{padding:0;}重置单元格默认填充   单元格合并 rowspan  属性规定单元格可横跨的行数.     <td rowspan="2"

ExtJs学习(二)(表单)

Ext.onReady(function{ var jj_form = new Ext.FormPanel({ url : 'jj_form_submit.java', renderTo : document.body, frame : true, title : 'formtest_jj', width : 250, items : [{ xtype : 'textfield', fieldlabel : 'username', name : 'username'},{ xtype : 'te

模板驱动表单(实验部分)

#模板驱动表单验证(template-driven form validation)实现思路 1. 引入 FormsModule 2. 应用 NgForm和ngModel(关联class的属性) 3. 验证 4. 给出提示 5. 提交(Submit) #实现知识点 在login.component.ts中 <form #f="ngForm" class="login-form"> //创建模板引用变量 实现双向数据绑定,template与model cl

数据结构学习小结2 (第二章:线性表)

一.小结(1)认为最重要的内容小结:1.链表和顺序表的操作的代码实现.(初始化.创建.取值.查找.删除.插入)2.线性表的应用:线性表的合并:有序表的合并3.一元多项式的和的代码实现. (2)其他杂七杂八的收获:1.更深理解了->的含义:->是指针的指向运算符,通常与结构体一起使用.[从小组成员上获得的收获]2.通过作业和视频学习了单链表的逆转的实现3.尾指针不为空,尾指针->next才为空4.看了老师“带你打代码”里面有序表合并的代码写法,让我更熟悉一些操作,譬如: 新建一个结点: (