A-A+

python bottle框架基础教程:路由(route)

2015年05月24日 bottle 评论 2 条 阅读 10,635 views 次

在看这篇文章之前,我建议先看bottle官方文档,可者在SVN下载中文文档

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

SVN请跳转至:教程总目录

 

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

 

静态路由

注:以下很多文字说明,我直接是用文档上的

bottle开发从hello写起,用vim创建新的py文件:

vim main.py

  1. #/usr/bin/env python
  2. #coding=utf-8
  3. from bottle import route, run
  4. @route('/hello')  #定义路由,即浏览器访问的地址
  5. def hello():          #函数名根据功能随意定义吧,只要不使用系统关键字便可,一般推荐按功能命名吧
  6.     return "Hello www.linuxyw.com"     #浏览器返回的内容
  7. run(host='0.0.0.0', port=8080)             #开启服务,端口是8080,授受任何IP地址访问

 

现在这个教程,是直接这台博客服务器下跑的,所以,我只要输入我网站的域名(一般来说,都是在自己电脑上,或虚拟机中跑的程序,那么就应该输入该IP,如:http://192.168.1.22:8080/hello),就可以访问上面的程序

在浏览器输入地址:http://linuxyw.com:8080/hello

hello linuxyw.com

hello linuxyw.com

 

就这么简单!保存为 py 文件并执行:

python main.py

  1. [root@linuxyw bottle]# python main.py 
  2. Bottle v0.12.8 server starting up (using WSGIRefServer())...
  3. Listening on http://0.0.0.0:8080/
  4. Hit Ctrl-C to quit.

 

用浏览器访问 http://linuxyw.com:8080/hello 就可以看到”Hello www.linuxyw.com”。它的执行流程大致如下:

route() 函数将一段代码绑定到一个 URL,在这个例子中, 我们将 hello() 函数绑定给了 /hello 。我们称之为 route (也是该修饰器的函数名) ,这是 Bottle 框架最重要的开发理念。你可以根据需要定义任意多的 route 。在浏览器请求一个 URL 的时候,框架自动调用与之相应的函数,接着将函数的返回值发送给浏览器。就这么简单!最后一行调用的 run() 函数启动了内置的开发服务器。它监听的 8080 端口并响应请求,Control-c 可将其关闭。到目前为止,这个内置的开发服务器已经足够用于日常的开发测试了。它根本不需要安装,就可以让你的应用跑起来。在教程的后面,你将学会如何让你的应用跑在其他服务器上面

 

(译者注:内置服务器不能满足生产环境的要求)

 

调试模式 在早期开发的时候非常有用,但请务必记得,在生产环境中将其关闭。

毫无疑问,这是一个十分简单例子,但它展示了用 Bottle 做应用开发的基本理念。接下来你将了解到其他开发方式。

 

动态路由

动态路由简单的就是说,url地址是可以传递不同的内容到网页内容上去,这样就不需要写很多的静态路由了,用以下的代码示例吧

  1. @route('/hello/<name>')
  2. def helloName(name):
  3.     return "hello:%s" % name

用浏览器访问:http://linuxyw.com:8080/hello/drfdai,显示:

bottle 动态路由

bottle 动态路由

 

在url中,输入不同的值,就会出现不同的内容,

如果我输入http://linuxyw.com:8080/hello/jianjian,那网页就会显示:hello:jianjian

如果我输入http://linuxyw.com:8080/hello/python,那网页就会显示:hello:python

 

包含通配符的 route,我们称之为动态 route(与之对应的是静态 route),它能匹配多个 URL 地址。一个通配符包含在一对尖括号里面 (像这样 <name> ),通配符之间用”/” 分隔开来。如果我们将 URL 定义为/hello/<name> 这样,那么它就能匹配 /hello/alice 和 /hello/bob 这样的浏览器请求,但不能匹配/hello , /hello/ 和 /hello/mr/smith 。URL 中的通配符都会当作参数传给回调函数,直接在回调函数中使用。这样可以漂亮地实现 RESTful形式的 URL。

 

 

关键词:

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

来自外部的引用: 2 条

  • python bottle框架(WEB开发、运维开发)教程 | linux系统运维
  • python bottle 框架基础教程:模板继承 | linux系统运维

给我留言

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

用户登录

分享到: