tornado入门 - 静态文件处理 和 登陆装饰器

*修改模板中静态文件的引用

src="js/wow.min.js"

改为

src="{{static_url("js/wow.min.js")}}"

tornado自带的静态文件host方法

 (r'/(.+?\..+)', tornado.web.StaticFileHandler, dict(path=settings['static_path'])),


*使用装饰器进行授权验证
@tornado.web.authenticated

def get...


*自动加载脚本变化,不重启服务器的方法 , 仅支持py文件, html不支持

settings中

'debug':True,

 debug为False时 

tornado.autoreload.start()


* 更改设定的方式
define('port', default=8888, help='Run on the given port', type=int)
define('debug', default=True, help='Set debug mode', type=bool)



例子


#-*- coding: utf-8 -*-

import tornado.httpserver
import tornado.ioloop
import tornado.web
import os
#7 debug为False时 实现autoreload
import tornado.autoreload

from tornado.options import define, options
#6 通过define设置变量
define('port', default=8000, help='Run on the given port', type=int)
define('debug', default=False, help='Set debug mode', type=bool)


class HomeHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('index.html')

class LoginHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('login.html')
    def post(self, *args, **kwargs):
        self.set_secure_cookie('user', self.get_argument('user', None))
        self.write('Successully set cookie !!')

#3
class OtherHtmlHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        user = self.get_secure_cookie('user')
        return user
    #4 使用装饰器进行授权验证
    @tornado.web.authenticated
    def get(self, page):
        #4 手动验证
        # if not self.current_user:
        #     self.redirect(self.settings['login_url'])
        #     return
        pagename = page + '.html'
        path = os.path.join(self.settings['static_path'], pagename)
        self.render(pagename)


#2 一种host读取静态文件的方法
# class OtherHandler(tornado.web.RequestHandler):
    # def get(self, page, extension):
    #     pagename = page + '.' + extension
    #     path = os.path.join(self.settings['static_path'], pagename)
    #     print(path)
    #     if extension != 'html':
    #         with open(path) as f:
    #             self.write(f.read())


class CustomApp(tornado.web.Application):
    # 5 自动加载脚本变化,不重启服务器的方法, 仅支持py文件, html不支持
    def __init__(self, debug = False):
        settings = {
            'template_path':os.path.join(os.path.dirname(__file__), 'moban_clean/templates'),
            'static_path':os.path.join(os.path.dirname(__file__), 'moban_clean'),
            'blog_title': "tornado blog",
            'login_url': '/login.html',
            'cookie_secret':"2379874hsdhf0234990sdhsaiuofyasop977djdj",
            'xsrf_cookies':True,
            # 5 自动加载脚本变化,不重启服务器的方法, 仅支持py文件, html不支持
            'debug':debug,
        }
        handles = [
            (r'/$', HomeHandler),
            (r'/login.html', LoginHandler),
            (r'/(.+?)\.html', OtherHtmlHandler),
            # 1 一种host读取静态文件的方法
            #(r'/(.+?)\.(.+)', OtherHandler),
            #3 tornado自带的tornado.web.StaticFileHandler实现静态文件host方法
            (r'/(.+?\..+)', tornado.web.StaticFileHandler, dict(path=settings['static_path'])),

        ]

        super(CustomApp, self).__init__(handles, **settings)

if __name__ == '__main__':
    # 6 通过define设置变量
    tornado.options.parse_command_line()

    # 6 通过define设置变量
    #5 自动加载脚本变化,不重启服务器的方法, 仅支持py文件, html不支持
    app = CustomApp(debug=options.debug)
    http_server = tornado.httpserver.HTTPServer(app)
    # 6 通过define设置变量
    http_server.listen(options.port)
    # 7 debug为False时 实现autoreload
    tornado.autoreload.start()
    tornado.ioloop.IOLoop.instance().start()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值