tornado模板学习笔记

Tornado模板学习

tornado是一个python编写的一个强大的、可扩展的web服务器。

Tornado包括了一个有用的模块(tornado.options)来从命令行中读取设置

Tornado的RequestHandler类有一系列有用的内建方法,包括get_argument,我们在这里从一个查询字符串中取得参数greeting的值。(如果这个参数没有出现在查询字符串中,Tornado将使用get_argument的第二个参数作为默认值。)

RequestHandler的另一个有用的方法是write,它以一个字符串作为函数的参数,并将其写入到HTTP响应中

一旦Application对象被创建,我们可以将其传递给Tornado的HTTPServer对象,然后使用我们在命令行指定的端口进行监听(通过options对象取出。)最后,在程序准备好接收HTTP请求后,我们创建一个Tornado的IOLoop的实例。

基本了解

	 1、在Application的参数中添加template_path配置,指定模板的路径和静态文件的路径
	  
	   template_path='template';
	   static_path='static';
	   
	2、把html文件放入template文件夹下,把静态文件放入static文件夹下

	3、使用render方法渲染模板

		class IndexHandler(tornado.Web.RequestHandler);
			def get(self);
			self.render('tmp_index.html');
			
	这段代码告诉Tornado在templates文件夹下找到一个名为tmeplate_index.html 的文件,读取其中的内容,并且发送给浏览器

模板中的符号

	{{}}表达式用双括号包围,内容是可以是如何python表达式,在双大括号中的单词是占位符
	{% %}模板控制语句以{% %}包围
	
	### 1、双大括号中放置变量名或表达式,变量名与传入的关键字参数名要相同
	
	```python
		#传入一个表达式
		{{ 1+2 }} 
		<br>
		{{ time.time() }} # 可以执行函数
		<br>
		{{ haha() }} # 自定义的函数也可以传入

	```

2、控制语句

	控制语句的返回以最近的{% end %}结束
	
	if条件判断
		{% if condition %}
		{% else condition %}
		{% else %}
		{% end %}
	for循环
		{% for var in expr %}
		...
		{% end %}

模板转义

		atag = "<a href='https://www.baidu.com/' target='_blank'>'---百度---' </a><br> "
			self.render('03escape.html',
				username=username,
				time=time,
				urllist=urllist,
				atag=atag
            )
	当然这个默认自动是转义的,如果不要转义也是可以的,有如下方法:

	1.全局转义,在Application中添加配置项

	autoescape=None,
	2.在文档最开始添加

	{% autoescape None %} #实现整个文档转义

		{{ atag }}
		{{ escape(atag) }}
	3.也可以使用 {% raw xxx %} 来输出不转义内容

	{% raw atag %}

模板继承

	把多个页面相同的内容提取出来放在一个base.html文件中,各个子html文件不同的内容使用块语句占位
	子html重写这个块中的内容。

模板中使用函数

	escape(s) 替换字符串中的&、<、>为他们对应的html字符。
	url_escape(s) 使用urllib.quote_plus替换字符串中的字符为URL编码格式。
	json_encode(val) 将val转换json格式
	squeeze(s) 过滤字符串s,把连续的多个空白字符替换为一个空格
	
	static_url的函数来生成static目录下文件的URL

模板扩展

	语法:{% extends "filename.html" %}

	块,block语句
	语法:{% block header %}{% end %}
	
	注:一个语法错误或者没有闭合的{% block %}语句可以使得浏览器直接显示500: Internal Server Error(如果你运行在debug模式下会引发完整的Python堆栈跟踪)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章