使用bottle进行web开发:hello world
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用bottle进行web开发:hello world相关的知识,希望对你有一定的参考价值。
为什么使用bottle?因为简单,就一个py文件,和其他模块没有依赖,3000多行代码。
http://www.bottlepy.org/docs/dev/
既然开始学习,就安装它吧。
pip3 install bottle
ok
第一个代码:
from bottle import route,run,template @route(‘/hello/<name>‘) def index(name): return template(‘<b>Hello {{name}}</b>!‘,name=name) run(host=‘localhost‘,port=8080)
运行ok
从这段代码可以i看出来,bottle虽小,支持不差,包括route,template等,都支持。
而最后一行代码的run,实际上,就是启动一个内置的web server。3000多行代码,还包括一个这个,厉害。
处于简单的目的,我们后续学习,大部分时候,都是用一个module-level的装饰器route()去定义路由。这会把routes都加入到一个全局的缺省程序,当第一次调用route()的时候,Bottle的一个进程会被创建。
实际上,更应该代码是这样的;
from bottle import Bottle, run app = Bottle() @app.route(‘/hello‘) def hello(): return "Hello World!" run(app, host=‘localhost‘, port=8080)
上面的,route基本都是静态的,下面,我们介绍动态路由:
动态路由相对静态路由来说,用的更广泛,一次性匹配更多的url:
比如/hello/<name>可以匹配:/hello/wcf /hello/hanyu /hello/whoami 但是不匹配:/hello /hello/ /hello/wcf/ddd
举例如下;
@route(‘/wiki/<pagename>‘) # matches /wiki/Learning_Python def show_wiki_page(pagename): ... @route(‘/<action>/<user>‘) # matches /follow/defnull def user_api(action,
这里,还需要关注动态路由的Filters(我称之为匹配器,目前有4种,可以增加更多),具体是:
:int matches (signed) digits only and converts the value to integer.
? :float similar to :int but for decimal numbers.
? :path matches all characters including the slash character in a non-greedy way and can be used to match more
than one path segment.
? :re allows you to specify a custom regular expression in the config field. The matched value is not modified
举例
from flask import Flask app = Flask(__name__) @app.route(‘/user/<int:user_id>‘ def user(user_id): return ‘Hello,%d‘ %user_id if __name__ == ‘__main__‘: app.run(debug=True)
#coding:utf-8 from flask import Flask from werkzeug.routing import BaseConverter #定义正则转换器的类 class RegexConverter(BaseConverter): def __init__(self,url_map,*items): super(RegexConverter, self).__init__(url_map) self.regex=items[0] app = Flask(__name__) #实例化 app.url_map.converters[‘regex‘]=RegexConverter @app.route(‘/user/<regex("([a-z]|[A-Z]){4}"):username>‘, methods=[‘POST‘, ‘GET‘]) def user(username): return ‘Hello,%s‘ % username if __name__ == ‘__main__‘: app.run(debug=True)
代码如下;
以上是关于使用bottle进行web开发:hello world的主要内容,如果未能解决你的问题,请参考以下文章
使用bottle进行web开发:Generating Content
基于Bottle 封装一下自用web前后端分离开发框架(1):项目规划