tornado访问静态文件1

tornado访问静态文件总的来说有两种方法:

第一种, 如果你想让tornado自己来管理静态文件, 那么就要要在application里设置static_path的值, 请求的时候, 要是/static/....

第二种, 使用nginx服务器的话, 那么你就告诉nginx静态文件在哪里, 让nginx服务器来帮助你管理


今天简单说一下第一种.

首先, 我们要在application设置static_path, 这样就等于告诉了tornado, 我们的静态文件去哪里找. 也就是把静态文件的根目录告诉了tornado. 这个时候, 假设我们的静态文件放在static目录下.

第二步, 你要在请求的时候使用/static/这个前缀. 比如 /static/img/test.png , 也就是test.png文件是放在/static/img下的. 

这里有个简单步骤, 我们的tornado模板里的命名空间有一个static_url的函数, 这个函数会自动的把文件路径转为static目录下的. 

{{ static_url('img/test.png') }}

这里的static_url生成的前缀是可以设置的. 也在application的settings里static_url_prefix, 默认是"/static/"


一般来讲前两步骤基本就解决我们的静态文件访问内容了.但是如果你是和前端协助的话, 这样每一次都要改路径. 都要硬编码在html文件中, 或者加上{{static_url('')}}.

这样很烦, 也很容易出错.

这个时候, 我们就要使用tornado的一个预定义的handler--------tornado.web.StaticFileHandler, 这个handler能够极大的方便我们访问到我们的静态文件. 

只要在路由里这么写.

    #静态文件
    URLSpec(r"/static/(.*)", StaticFileHandler, {"path": config.STATIC_PATH}),
    URLSpec(r"/css/(.*)", StaticFileHandler, {"path": config.CSS_URL}),
    URLSpec(r"/js/(.*)", StaticFileHandler, {"path": config.JS_URL}),
    URLSpec(r"/img/(.*)", StaticFileHandler, {"path": config.IMG_URL}),
这里的

    config.STATIC_PATH = "/static"
    config.CSS_URL = "/static/css"
    config.JS_UR = "/static/js"
    config.IMG_URL = "/static/img"
是你的自己设定的目录, 
这样每一次访问/css/....这样的资源的时候, 都会定向到/static/css这个路径下寻找.

这样你前端拿过来的代码都不用修改了.

发布了44 篇原创文章 · 获赞 3 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qiya2007/article/details/38514683