目录
一、模板渲染
在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/