Python3 --- Tornado之模板

目录

一、模板渲染

二、模板语法

2.1、变量输出

2.2、表达式输出

2.3、注释一个部分,防止他被输出

2.4、模板替换

2.5、模板继承

2.6、for循环

2.7、from引入包

2.8、import引入包

2.9、if分支

2.10、引入模板文件

2.11、渲染UI模块

2.12、不转义输出

2.13、设置局部变量

2.14、异常处理

2.15、while语句

2.16、static_url()函数

2.17、escape()函数

三、自定义函数

四、转义

五、CRSF/XSRF

5.1、使用模板

5.2、不使用模板


 

一、模板渲染

在handler中使用render()方法来渲染模板并返回给客户端。

import tornado.web
import tornado.ioloop
import tornado.httpserver
import os

from tornado.options import define, options


define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html",price1=100,price2=200)

current_path = os.path.dirname(__file__)
handlers = [
    (r"/",IndexHandler),
]

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(
        handlers,
        static_path = os.path.join(current_path,"static"),
        template_path = os.path.join(current_path, "template"),
        debug=True
    )
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

 

二、模板语法

2.1、变量输出

{
  { ... }}

可以直接输出render时传过来的变量

 

2.2、表达式输出

输出python表达式,通过AutoEscape设置插入和输出{% %}.

 

2.3、注释一个部分,防止他被输出

{# ... #}.

这些标签可以被转义为{ {!, {%!, and {#!
如果需要包含文字{ {, {%, or {# 在输出中使用

 

2.4、模板替换

{% block *name* %}...{% end %}
指定一个可被替换的块 {% extends %}.

父块的块可以被字块所替换,例如::   

 <!-- base.html -->
 <title>{% block title %}Default title{% end %}</title>

<!-- mypage.html -->
{% extends "base.html" %}
{% block title %}My page title{% end %}

 

2.5、模板继承

{% extends *filename* %}

从另一个模板那里继承过来. extends包含一个或多个标签以从父模块那继承过来 ,不包含在块中的子模板及时存在标签页也会被忽略 , 详见 {% block %} 标签

 

2.6、for循环

{% for house in houses %}...{% end %}

这和 python 的for 是一样的。 {% break %} 和{% continue %} 语句是可以用于循环体之中的。

 

2.7、from引入包

{% from ... import ... %}

这和python的from、import语法是一样的。

 

2.8、import引入包

{% import ... %}

和python代码一样的声明 import

 

2.9、if分支

{% if ... %}...{% elif ... %}...{% else %}...{% end %}

表达式为真时,第一个条件语句会被输出 (在 elif 和 else之间都是可选的)

 

2.10、引入模板文件

{% include ... %}

包含另一个模板文件,所包含的模板文件可以使用所有的局部变量,如果是直接被 include进来的话(其中 {% autoescape %} 是个例外).另外, {% module Template(filename, **kwargs) %} 可以将两个模板的命名空间隔离.

 

2.11、渲染UI模块

{% module ... %}

示例:

我们页面上弹出一个小的弹窗

class Advertisement(UIModule):
    def render(self, *args, **kwargs):
        return self.render_string('alert_add.html')

    def css_files(self):
        return "/static/css/King_Chance_Layer7.css"

    def javascript_files(self):
        return [
            "/static/js/jquery_1_7.js",
            "/static/js/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值