A-A+

python bottle 框架基础教程:静态资源(样式、图片、字体等)

2015年05月26日 bottle 评论 3 条 阅读 10,019 views 次

 

要开发WEB的话,就需要涉及到相关的静态资源,如CSS,JS,图片,字体等,bottle有个函数static_file() 用来提供静态文件服务。它会自动猜测文件的 mime-type,添加 Last-Modified 头。当然你也可指定 MIME 类型来避免其自动猜测。

设置静态资源访问路由,要设置route,如@route('/images/<filename:re:.*\.png>')  ,/image,是url访问路径,/<filename:re:.*\.png>' 是一个正则匹配,如匹配以.png结尾的所有文件,如果是jpg图片,即可以用*\.jpg,如果是css或js则用.*\.css,.*\.js。

然后调用bottle static_file()方法,static_file(filename, root=images_path) :filename是url里匹配到的文件名,root是图片等静态资源存放路径。最后,程序就会根据这设置好的路由,去找到相关的文件,并在浏览器显示出来。

以下是一个显示图片的代码:

  1. [root@linuxyw bottle]# cat main.py 
  2. #/usr/bin/env python
  3. #coding=utf-8
  4. from bottle import route, run
  5. from bottle import template,static_file
  6. #定义图片路径
  7. images_path = './images'
  8. @route('/images/<filename:re:.*\.png>')
  9. def server_static(filename):
  10.     return static_file(filename, root=images_path)
  11. @route('/')
  12. def index():
  13.         return template('index')
  14. run(host='0.0.0.0', port=8080, debug=True)

 

在main.py当前目录下,再创建一个images目录,用来存放图片,这图片我已放在SVN,可SVN UP出来直接用就好了,看下目录结构:

  1. [root@linuxyw bottle]# tree
  2. .
  3. ├── images
  4. │   └── linuxyw.png     #这是一张图片
  5. ├── main.py
  6. └── views
  7.     └── index.tpl

 

看下index.tpl代码,就是在首页中,显示这张图片,注意img 路径:

  1. [root@linuxyw bottle]# cat views/index.tpl   
  2. <html>
  3.         <head>
  4.         </head>
  5.         <body>
  6.         <p>图片</p>
  7.         <p><img src="/images/linuxyw.png"></img></p>
  8.         </body>
  9. </html>

 

用浏览器访问看效果:

bottle 静态资源

bottle 静态资源

 

在实际中,我们可能有很多图片类型,如png,jpg,gif,样式有css,js等,如果每一个类型就要设置一个路由的话,就太麻烦了,其实,我们可以用 | 来匹配多种类型:

  1. @route('/assets/<filename:re:.*\.css|.*\.js|.*\.png|.*\.jpg|.*\.gif>')
  2. def server_static(filename):
  3.     """定义/assets/下的静态(css,js,图片)资源路径"""
  4.     return static_file(filename, root=assets_path)
  5. @route('/assets/<filename:re:.*\.ttf|.*\.otf|.*\.eot|.*\.woff|.*\.svg|.*\.map>')
  6. def server_static(filename):
  7.     """定义/assets/字体资源路径"""
  8.     return static_file(filename, root=assets_path)

 

更多的功能,可以查看bottle官网文档或其它教程

官方文档:http://www.bottlepy.org/docs/dev/index.html

SVN请跳转至:python bottle框架(WEB开发、运维开发)教程目录

这些代码已提交到SVN中,有需要的朋友可在SVN下载

 

关键词:

3 条留言  访客:1 条  博主:1 条   引用: 1 条

  1. avatar qq

    不知道为什么,我用你的代码用template显示图片显示不了,图片用相对路径和绝对路径都不行,我用的是ubuntu系统

    • avatar 江江

      路径资源访问那里没写好吧

来自外部的引用: 1 条

  • python bottle框架(WEB开发、运维开发)教程 | linux系统运维

给我留言

Copyright © linux系统运维 保留所有权利.   Theme  Ality 粤ICP备13023035号-1

用户登录

分享到: