A-A+

python bottle 框架基础教程:模板的使用

2015年05月24日 bottle 评论 5 条 阅读 16,621 views 次

Bottle 内置了一个快速的,强大的模板引擎,称为 SimpleTemplate 模板引擎 。可通过 template() 函
数或 view() 修饰器来渲染一个模板。只需提供模板的名字和传递给模板的变量。默认情况, Bottle 会在 ./views/ 目录查找模板文件 (译者注:或当前目录)。可在 bottle.TEMPLATE_PATH 这个列表中添加更多的模板路径。view() 修饰器允许你在回调函数中返回一个字典,并将其传递给模板,和 template() 函数做同样的事情。

如果你不使用./views目录作为模板目录的话,则需要新创建一个模板目录,然后用 bottle.TEMPLATE_PATH.append('目录地址')的方式来增加。

 

以下例子是使用系统默认的views作为目录,我在当前所在的main.py目录中新创建了个文件夹,叫views,如下:

  1. [root@linuxyw bottle]# ll
  2. total 8
  3. -rw-r--r-- 1 root root 1333 May 24 19:35 main.py
  4. drwxr-xr-x 2 root root 4096 May 24 21:59 views  

 

模板示例:

  1. [root@linuxyw bottle]vim main.py   
  2. #/usr/bin/env python
  3. #coding=utf-8
  4. from bottle import route, run
  5. from bottle import template
  6. @route('/login')
  7. def login():
  8.     return template('login')     #login是模板名,这里不需要填写后缀.tpl
  9. run(host='0.0.0.0', port=8080, debug=True)   #开启服务

 

在views目录中,创建一个模板文件,叫login.tpl

  1. [root@linuxyw bottle]# vim views/login.tpl
  2. <html>
  3.     <head>
  4.     <title>登陆页面</title>
  5.     </head>
  6.     <body>
  7.         <p><h2>管理员登陆</h2></p>
  8.         <form action="/login" method="post">
  9.             Username: <input name="username" type="text" />
  10.             Password: <input name="password" type="password" />
  11.             <input value="Login" type="submit" />
  12.         </form>
  13.     </body>
  14. </html>

 

运行main.py文件后,在浏览器中访问我的服务器地址:http://linuxyw.com:8080/login

login登陆

login登陆

 

给模板传递数据

编辑main.py文件,往程序里写入一些变量值,然后把这些值传递到模板中显示出来

  1. @route('/info')
  2. def info():
  3.     name = '戴儒锋'
  4.     age = '30'
  5.     blog = 'www.linuxyw.com'
  6.     qq = '63780668'
  7.     return template('info',tname = name,tage = age,tblog = blog, tqq = qq)

 

在views模板目录中,创建一个info.tpl模板文件:

  1. <html>
  2.     <head>
  3.     <title>会员中心</title>
  4.     </head>
  5.     <body>
  6.         <p><h2>会员信息</h2></p>
  7.         <p>姓名:{{tname}}</p>
  8.         <p>年龄:{{tage}}</p>
  9.         <p>博客:{{tblog}}</p>
  10.         <p>QQ:{{tqq}}</p>
  11.     </body>
  12. </html>

 

打开浏览器,访问url地址:http://linuxyw.com:8080/info

(再次注明下,我是在我这博客服务器上写的教程,所以访问这个代码时,就直接用了我的域名直接访问,如果你是用虚拟机什么的,请用你的虚拟机IP进行访问)

bottle 模板之会员信息

bottle 模板之会员信息

 

在此之前,我都是用template()来渲染模板的,你也可以使用view()来渲染,我把上面的代码修改一下,使用views():

  1. [root@linuxyw bottle]# vim main.py    
  2. @route('/info')
  3. @view('info')     #在这里用view来加载info模板,记得这里不需要写模板后缀名
  4. def info():
  5.     name = '戴儒锋'
  6.     age = '30'
  7.     blog = 'www.linuxyw.com'
  8.     qq = '63780668'
  9.     data = {'tname':name,'tage':age,'tblog':blog, 'tqq': qq}    #用view的时候,可以用返回字典类型数据
  10.     return data

 

打开浏览器,再访问:http://linuxyw.com:8080/info

bottle view模板方法

bottle view模板方法

 

下面说下模板中如何调用后端传递过来的数据

像刚才info.tpl模板中,我们用了{{tname}},{{tage}},{{tblog}},{{tqq}}方法,这个其实就是显示后端return template('info',tname = name,tage = age,tblog = blog, tqq = qq) 传递过来的数据,在后端return的数据中,前端是tname是KEY,后面name是VALUE,所以模板中使用{{}}来表示调用数据中的KEY,如{{key}},代码运行后,就会显示这key对应的value,这是一种字典数据类型的调用方法吧。

如果后端传递过来的数据value中是一个列表或字典,那么,我们可以像用python语法一样调用列表或字典中任何想要的元素。

在main.py  info中增加了个书籍的列表,我在模板中需要只调用该列表中叫python的书,它位于列表中的第0个位置,所以我在模板用{{tbook[0]}}来获取。

在main.py  info中再增加了一个字典类型数据,把要显示字典中key为pc的值,这个在模板中可以用{{tprice.get('pc')}来显示对应的值,这也是python字典调用方法,以下是相关的代码:

  1. @route('/info')
  2. @view('info')
  3. def info():
  4.     name = '戴儒锋'
  5.     age = '30'
  6.     blog = 'www.linuxyw.com'
  7.     qq = '63780668'
  8.     book = ['python','linux','php']
  9.     price = {'pc':4000,'phone':2000,'bike':600}
  10.     data = {'tname':name,'tage':age,'tblog':blog, 'tqq': qq,'tbook':book,'tprice':price}
  11.     return data

 

模板info.tpl代码:

  1. <html>
  2.     <head>
  3.     <title>会员中心</title>
  4.     </head>
  5.     <body>
  6.         <p><h2>会员信息</h2></p>
  7.         <p>views()方法</p>
  8.         <p>姓名:{{tname}}</p>
  9.         <p>年龄:{{tage}}</p>
  10.         <p>博客:{{tblog}}</p>
  11.         <p>QQ:{{tqq}}</p>
  12.         <p>python书名:{{tbook[0]}}</p>
  13.         <p>电脑:{{tprice.get('pc')}}</p>
  14.     </body>
  15. </html>

 

在浏览器访问后的效果:

bottle 获取变量

bottle 获取变量

 

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

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

SVN请跳转至:教程总目录

 

...

关键词:

5 条留言  访客:2 条  博主:0 条   引用: 3 条

  1. avatar 匿名

    svn无法访问

  2. avatar 随风而行

    谢谢博主的分享!教程深入浅出,实在是小白的福音

来自外部的引用: 3 条

  • python bottle框架(WEB开发、运维开发)教程 | linux系统运维
  • python bottle 框架基础教程:模板语法 | linux系统运维
  • python bottle 框架实战教程:配置模板 | linux系统运维

给我留言

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

用户登录

分享到: