Tornado之视图部分

视图部分就是负责产生前端html页面
为了便于管理,统一放在views文件夹中(详见提纲)

需要在settings中添加: "template_path":'views',

Tornao中的模板语言和django中类似,模板引擎将模板文件载入内存,然后将数据嵌入其中,最终获取到一个完整的字符串,再将字符串返回给请求者。

这里需要注意的一点是前端如果有模板文件,则Tornado后端必须传入,否则报错,而在django中则不会

Tornado 的模板支持“控制语句”和“表达语句”,控制语句是使用 {% 和 %} 包起来的 例如 {% if len(items) > 2 %}。表达语句是使用 {{ 和 }} 包起来的,例如 {{ items[0] }}。

Toanado表达语句和python原有语法一致,而非django中万能的句点号

控制语句和对应的 Python 语句的格式基本完全相同。我们支持 if、for、while 和 try,这些语句逻辑结束的位置需要用 {% end %} 做标记。

即Toanado控制语句也和python语句格式大体相同,逻辑结束位置统一用 {% end %} 做标记,这又和Django对应结束不同

Tornado也通过 extends 和 block 语句实现了模板继承

Django为模板提供了一些默认的过滤器(filter)和标签(tag)
Tornado也默认提供了一些函数、字段、类以供模板使用

Django可以自定制filter和simple_tag
Tornado也可以自定制一些

说明一点:settings中添加’autoescape’:None,会将所有html字符串渲染,如此容易受到XSS攻击,一般不用

一,定义

# uimethods.py
 
def tab(self):
    return '<h1>UIMethod</h1>'
#uimodules.py
from tornado.web import UIModule
from tornado import escape

class custom(UIModule):

    def render(self, *args, **kwargs):
    	# return ("啦啦啦")
        #return ("<h1>啦啦啦</h1>")
        # return escape.xhtml_escape('啦啦啦')
        return escape.xhtml_escape('<h1>啦啦啦</h1>')
        def embedded_css(self):
        return ".c1{display:None}"
   def css_files(self):
       return "commens.css"
   def embedded_javascript(self):
       return "commens.js"
   def javascript_files(self):
       return "function f1(){alert(123)}"

二,注册

import uimodules as md
import uimethods as mt
'''settings中添加    
	'ui_methods': mt,
    'ui_modules': md,'''

三,使用


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link href="{{static_url("commons.css")}}" rel="stylesheet" />
</head>
<body>
    <h1>hello</h1>
    {% module custom() %}
    {{ tab() }}
    {% raw tab() %}
</body>

两者可以前端直接传参

uimethods,默认不渲染html字符串,但可通过前端改变形式使其渲染
{{ tab() }} :不渲染
{% raw tab() %} :渲染
uimodules,默认自动渲染html字符串,但可以通过escape.xhtml_escape方法使不渲染

除此之外,nimoduls还可以导入css/js代码或文件,需要新建文件夹static在settings添加’static_path':"static"

补充一点:模板是如何渲染的,、
采用的是字符串分隔,把html文件当成一个大的字符串,从头开始走,遇到模板语言就停,作为一部分,把模板语言作为一部分,拿到相应数据在显示,之后继续按照这个模式,把html字符串一块一块分着处理
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值