Tornado是一种 Web 服务器软件的开源版本,它是非阻塞式服务器,而且速度相当快。

一、基本操作

import tornado.ioloop
import tornado.web

# 模板引擎
class MainHandler(tornado.web.RequestHandler):
def get(self,*args,**kwargs):
# self.write('Hello world')
self.render('template.html',mag='')
self.redirect('template.html')
def post(self,*args,**kwargs):

value = slef.get_argument('') # 获取post提交的数据
cookie = slef.get_cookie() # 获取cookie信息
self.render('template.html',mag='')
self.redirect('template.html',)

# 配置文件
settings = {
"template_path":'views',
"cookie_secret":'nhskha'
}

# 路由系统
application = tornado.web.Application([
(r"/index",MainHandler),
],**settings)



if __name__ == "__main__":

application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
获取信息:
slef.get_argument('') # 获取post提交的数据
slef.get_arguments() # 获取post提交的全部数据

cookie 操作:
slef.set_cookie() # 设置cookie信息
slef.get_cookie() # 获取cookie信息
slef.set_secret_cookie('cookie') # 加密cookie
必须settings中配置自己加密的字符串
slef.get_secret_cookie('cookie') # 解密cookie

获取文件:
slef.request.files['']

self._headers # 获取请求头信息

ps:不同的功能可以分拆到不同的功能文件夹中;实现功能独立。for循环必须return
二、模板引擎

{{ li[0] }} # 获取列表信息
{% for i in range(10) %}
{% end %}
# 所有需要结束的都以end结尾

自定义模板标签
可通过 UIMothod UIModule 进行自定义方法和模板

{% module 类名() %}

2.1、自定义模板
module.py文件:定义模板类与方法

from tronado.web import UIModule
from tornado import escape

class Custom(UIModule):

def embedded_css(self):# 嵌入式css样式
return "css样式"

def css_files(self):
return 'css静态文件'

def embedded_javascript(self):# 嵌入javascript代码
return "javascript代码"

def javascript_files(self):
return 'javascript静态文件'

def render(self,*args,**kwargs):
return "<h1>返回内容</h1>" # 不设置转译是什么东西直接输出
# return escape.xhtml_escape('<h1>返回内容</h1>') 转译html标签为字符串

method.py文件:自定义方法

from tornado import escape
def tab(self,val):
print(self,val) # slef:<class 'tornado.httputil.HTTPServerRequest'>
return 'UIMethod' # 返回html标签会直接输出,在settings中需要配置

自定义方法需要在settings进行注册,才能在html文件中使用

import method as mt
import module as mm
settings = {
'ui_methods':mt,# 注册自定义方法
'ui_modules':mm,# 注册自定义模板
'static_path':'/static/' # 指定静态文件
}

html使用

<html>
<head>
<title>使用自定义模板</title>
</head>
<body>
<!-- 自定义方法的使用 -->
{{ tab(11) }} <!-- 转译html标签为字符串 -->
{% raw tab(11) %} <!-- 不转译html标签为字符串 -->

<!-- 模板的使用 -->
{% module Custom(22) %}

</body>
</html>

三、自定义开源组件
3.1、Tornado 自定义继承的一些事情

# 1、多继承 Python是可以多继承。
import tornado.ioloop
import tornado.web

class Foo(object):
def initialize(self):# initialize是tornado.web.RequestHandler 父类中的方法
self A = 123
super(Foo,self).initialize() # 利用super() 可以执行其他自定义的类

# 模板引擎
class MainHandler(Foo,tornado.web.RequestHandler):
def get(self,*args,**kwargs):
self.write('Hello world') 

# 路由系统
application = tornado.web.Application([
(r"/index",MainHandler),
],**settings)


if __name__ == "__main__":

application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
# 2、通用的继承方法
'''
Foo 继承 tornado.web.RequestHandler 
MainHandler 再继承 Foo 来实现类方法的扩展
'''
import tornado.ioloop
import tornado.web

class Foo(tornado.web.RequestHandler):
def initialize(self):# initialize是tornado.web.RequestHandler 父类中的方法
self A = 123
super(Foo,self).initialize() # 利用super() 可以执行其他自定义的类

# 模板引擎
class MainHandler(Foo):
def get(self,*args,**kwargs):
self.write('Hello world') 

# 路由系统
application = tornado.web.Application([
(r"/index",MainHandler),
],**settings)


if __name__ == "__main__":

application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐