+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-07(6)

2019-08(116)

2019-09(98)

2019-10(17)

2019-11(5)

tornado 中的模板使用 和 加载静态资源

发布于2020-02-10 17:28     阅读(1095)     评论(0)     点赞(17)     收藏(4)


tornado 中的模板使用

import random
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, parse_config_file, options
from tornado.web import Application, RequestHandler

define('port', type=int, default=8888, multiple=False)
parse_config_file('config')

class IndexHandler(RequestHandler):
    def get(self, *args, **kwargs):
    	msg = ''
        if self.get_arguments('msg'):
            msg = '用户名密码错误'
        self.render('login.html', result=msg)  # 返回模板内容

class NewHandler(RequestHandler):
	def myrand(self, a, b):
        return random.randint(a, b)

    def post(self, *args, **kwargs):
        uname = self.get_arguments('uname')[0]
        upwd = self.get_arguments('upwd')[0]
        if uname == 'abc' and upwd == '123':
            self.render('new.html', 
            			num1=100, 
            			num2=200, 
            			myrand=self.myrand, # 传入模板,在html页面中调用函数
            			new_list=[{'title':'新闻第一线',
                                   'tag':['新闻','新型冠状病毒'],
                                   'contents':'新闻全部内容',
                                   'img':'0.jpg'},
                                  {'title': '新闻时刻',
                                   'tag': ['新闻', '科比逝世'],
                                   'contents': '新闻全部内容',
                                   'img':'1.jpg'},
                                  ])
        else:
            self.redirect('/?msg=false')


url_list = [('/', IndexHandler),
            ('/new', NewHandler)]

app = Application(url_list, 
				  template_path='F:/mytornado/mytemplates',# 指定模板所在的文件夹
			      static_path='F:/mytornado//mytemplates/mystatic') # 指定静态资源所在的文件夹
server = HTTPServer(app)
server.listen(options.port)
IOLoop.current().start()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
    <form method="post" action="/new">
        <p>用户名:<input type="text" name="uname"></p>
        <p>密码:<input type="password" name="upwd"></p>
        <p><input type="submit" value="登陆"></p>
    </form>
    <p>{{ result }}</p>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>New</title>
</head>
<body>
{% for new in new_list %}
<table border="1px" cellpadding="5px" width="100%">
    <tr><td rowspan="4" align="center" width="100px">
		<table>
		    <tr><td><img width="128px" hight="128px" 
		    src="{{static_url('images/'+new['img'])}}"  <!-- 获取静态资源 -->
		    align="center"></td></tr>
		    <tr><td align="center"><p style="width: 100px; border: 1px solid yellowgreen; white-space: nowrap; overflow: hidden; text-overflow: ellipsis">python小子</p></td></tr>
		 </table></td>
		 <td>{{ new['title'] }}</td>
    </tr>
    <tr><td>{{ ' '.join(new['tag']) }}</td></tr> <!-- 分割列表 -->
    <tr><td style="min-height: 150px; display: block">{{ new['contents'] }}</td></tr>
    <tr><td align="right">点赞数:{{ num1 }};评论数:{{ num2 }};阅读数:{{ num1 + num2 }};转发数:{{ myrand(50,100) }}</td></tr> <!-- num1和num2为变量,myrand为自定义函数,随机选取50至100之间的整数 -->
</table> 
{% end %}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 函数:

    • app = Application(url_list, template_path=’…’, static_path=’…’)
      • 参数url_list:路由列表,列表的每个元素为一个元组,如(’/’, IndexHandler)
      • 参数template_path:指定模板所在的文件夹
      • 参数static_path:指定静态资源所在的文件夹
    • self.render(‘index.html’, name1, name2…)
      • 参数 ‘index.html’:模板名称
      • name1, name2… :需要向模板中传递的参数,键名为name1,name2…
    • 模板获取参数值:
      • 在html文件中采用{{ }}获取
      • {{ name1 }} {{ name2 }} 获取一般参数值
      • {{ obj[‘name1’] }} {{ obj[‘name2’] }} 获取字段参数值
      • {{ function(name1,name2) }} 获取函数的返回值
    • 页面中加载静态资源
      • {{ static_url( str ) }} 加载静态资源
      • 参数str:静态资源的路径
      • 例如:{{ static_url(‘js/jquery-2.1.1.js’) }} 加载jQuery 文件
      • {{ static_url( ‘images/’ + new[ ‘img’ ] ) }} 加载静态资源图片
  • 说明

    • 1、输入用户名和密码不正确时,返回首页带msg参数,判断msg参数有值,提示 用户名密码错误
    • 2、在模板中使用if 或 for语句时,需要写{% end %},不需要写{% endif %} 或者{% endfor %}
    • 3、可以在模板中直接使用python的内置函数和自定义的函数
    • 4、‘ ’.join(list):可以直接分割列表内的元素
发布了75 篇原创文章 · 获赞 88 · 访问量 1万+


所属网站分类: 技术文章 > 博客

作者:python是我的菜

链接: https://www.pythonheidong.com/blog/article/231016/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)