Tornado架构配备和模版模块介绍

2021-03-29 05:16 jianzhan

Tornado是一个速率十分快的非堵塞式Web架构。有利于其非堵塞的方法和对epoll的应用,Tornado每秒钟能够解决不计其数的联接,这寓意着针对即时Web服务来讲,Tornado是一个理想化的Web架构。下边就看来看Tornado架构配备和模版模块介绍有关內容吧。下边就来完成下边截屏所显示的內容吧。

Tornado框架配置和模板引擎简介

Tornao中的模版語言和django中相近,模版模块将模版文档加载运行内存,随后将数据信息置入在其中,最后获得到一个详细的标识符串,再将标识符串回到给恳求者。

Tornado 的模版适用“操纵句子”和“表述句子”,操纵句子是应用 {% 和 %} 包起來的 比如 {% if len(items) 2 %}。表述句子是应用 {{ 和 }} 包起來的,比如 {{ items[0] }}。

操纵句子和相匹配的 Python 句子的文件格式基本彻底同样。大家适用 if、for、while 和 try,这种句子逻辑性完毕的部位必须用 {% end %} 做标识。还根据 extends 和 block 句子完成了模版承继。这种在 template 控制模块 的编码文本文档中拥有详尽的叙述。

注:在应用模版前必须在setting中设定模版相对路径: template_path : tpl 。

在模版中默认设置出示了一些涵数、字段名、类以供模版应用:

escape: tornado.escape.xhtml_escape 的別名

xhtml_escape: tornado.escape.xhtml_escape 的別名

url_escape: tornado.escape.url_escape 的別名

json_encode: tornado.escape.json_encode 的別名

squeeze: tornado.escape.squeeze 的別名

linkify: tornado.escape.linkify 的別名

datetime: Python 的 datetime 摸组

handler: 当今的 RequestHandler 目标

request: handler.request 的別名

current_user: handler.current_user 的別名

locale: handler.locale 的別名

_: handler.locale.translate 的別名

static_url: for handler.static_url 的別名

xsrf_form_html: handler.xsrf_form_html 的別名

除开应用架构内置的涵数外,还能够自定UIMethod以UIModule,应用方式是在文档中引进控制模块,并在Tornado的配备文档中设定。实际的实例编码以下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
演试Tornado模版語言
import tornado.web
import tornado.ioloop
import uimethods as mt
import uimodules as md
title =  热烈欢迎光顾!Hello World! 
LIST_INFO = []

 name = self.get_argument( name , None)  LIST_INFO.append(name) if name else print( name为空 ) & , title=title,&=LIST_INFO) settings = {   template_path :  templates , # 模版文档夹相对路径   static_path :  statics , # 静态数据文档夹相对路径   ui_methods : mt,   ui_modules : md, app = tornado.web.Application([  (r /index , IndexHandler), ], **settings) if __name__ ==  __main__ :  app.listen(8080)  tornado.ioloop.IOLoop.instance().start()

之上主导文档一部分,下边为模版文档一部分。

 !DOCTYPE html 
 html 
 head 
  meta charset= utf-8 
  meta http-equiv= X-UA-Compatible  content= IE=edge,chrome=1 
  title {{ title }} /title 
  meta name= description  content= 
  meta name= keywords  content= 
  link href= {{static_url( css/style.css )}}  rel= stylesheet 
 /head 
 body 
 header 
 {% block header %}{% end %}
 /header 
 content 
  form action= /index  method= get 
  input type= text  name= name 
  input type= submit  value= 递交 
  /form 
 {% block body %}{% end %}
 /content 
 footer 
 {% block footer %}{% end %}
 /footer 
 /body 
 /  %}
{% block header %}
  h1 {{ title }} /h1 
 {# 自定Tornado控制模块 #}
 {% module Custom(123) %}
 {# 自定Tornado涵数 #}
 {{ lower_str(title) }}
{% end %}
{% block body %}
 {% for index, item in ) %}
 {% if index % 2 == 1 %}
  li {{item}} /li 
 {% else %}
  li  >

自定UIMethod以UIModule一部分。

#!/usr/local/env python
# coding:utf-8
__author__ =  风轻平淡 

 return arg.lower()
#!/usr/local/env python
# coding:utf-8
from tornado.web import UIModule
from tornado import escape
__author__ =  风轻平淡 

 def render(self, *args, **kwargs):  return  UI_Modules