Tornado之模板基础

Tornado之模板基础
import tornado
import tornado.ioloop
import tornado.web
import tornado.httpserver
import time
import tornado.options
from tornado.options import options,define
define("port",default=8080,help="run port",type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("我在下面!<br>")
        self.render('01in_out.html')

    def post(self, *args, **kwargs):
        name = self.get_argument("name","no")
        #self.write(name)
        urllist = [
            ('http://www.shiguangkey.com/',"课堂"),
            ('http://www.baidu.com/',"百度"),
            ('http://www.zhihu.com/',"知乎")
        ]

        atga ="""
            <a href="http://www.baidu.com/" target="_blank"> __百度</a><br>     
        """
        ##模板转义,尖括号被变成其他的了
        self.render("02template.html",      ##跳转到02template.html页面
                    username = name,   ###不定长参数,字典传参  实在动态的往页面填入数据
                    time=time,
                    urllist = urllist,
                    atga = atga
                    )

application = tornado.web.Application(
      handlers = [
          (r"/tem", MainHandler),

      ],
      template_path = 'templates',  #在 application 中配置模板文件和静态文件的路径:
      static_path='static',    #引入静态文件
      #autoescape = None,    #整个项目 全局去掉转义
      debug=True
  )

if __name__ =="__main__":
    tornado.options.parse_command_line()
    http_server=tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

下面看前端02template.html文件代码:

<!DOCTYPE html>
{# autoescape None #}
<!-- 对模板级别取消转义 加% 此处为做笔记注释掉-->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>template</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body{
            background: blanchedalmond;
        }
    </style>
</head>
<body>
    hello  {{username}}
    <br>
    {{1+1}}
    <br>
    {{a=time.time()}}
<!--大括号里面可以运行python的表达式-->
    <br>
{% if username != 'no' %}
    欢迎 {{ username }}登录
{% else %}
        请登录!
{% end %}
     <br>
<!--大括号加%是模板的指令     模板的符号       end结束-->
    <!--{# a=time.time() #}  注释应该里面这样   -->
    <br>
{{!1+1 }}
<!--上面这样可以原样打印出源码,语句不执行-->
    <br>
{% for i in urllist %}
    {{ i }}
    <a href="{{ i[0] }}" target="_blank"> {{i[1]}} </a><br>
{% end %}
    <br>

<!--在模板里面声明变量,用set 声明与修改-->
{% set a = 0 %}
{% while a<5 %}
    {{ a }}<br>
    {% set a +=1 %}
{% end %}
    <br>

{{ atga }} 转义
    <br>
{% raw atga %}  局部去掉转义
<!--  前面加上raw就去掉转义,就不会把尖括号变成其他的了 -->
    <br>
{{ escape(atga) }}
<!--开启模板不转义之后,escape(atga) 对部分进行转义-->
    <br>

{% if username != 'no' %}
    欢迎 {{ username }}登录
    <img src="{{ static_url('images/2.jpg') }}" width="200" height="200">
    <img src="static/images/3.jpg" width="200" height="200">
    <!--此处的static会自动寻找变量,注意static文件的引入方式-->
{% else %}
        请登录!
{% end %}

</body>
</html>
  • 部分代码来自—-潭州课堂