为什么使用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开发(1):hello world的更多相关文章

  1. 使用bottle进行web开发(9):文件上传;json传递

    1.文件上传 如果要完成文件上传,则需要对上文的form做一点改动,具体如下: <form action="/upload" method="post" ...

  2. 使用bottle进行web开发(8):get的参数传递,form里的额数据传递等

    1.诸如:forum?id=1&page=5这样的,在bottle里,可以通过request.query来访问这些值,举例如下: from bottle import Bottle,run,r ...

  3. 使用bottle进行web开发(5):Generating Content

    在纯粹的 WSGI中,你的应用能返回的数据类型是十分有限的,你必须返回可迭代的字符串,你能返回字符串是因为字符串是可以迭代的,但是这导致服务器将你的内容按一字符一字符的传送,这个时候,Unicode ...

  4. 使用bottle进行web开发(4):HTTPError

    from bottle import error @error(404) def error404(error): return 'Nothing here, sorry' 上述代码,是对404的定义 ...

  5. 使用bottle进行web开发(2):http request

    我们知道,http request有多个方法,比如get,post,delete,patch,put等.对用的,bottle都定义了相应的装饰器,目前定义了五个: get(),post(),put() ...

  6. 使用bottle进行web开发(6):Response 对象

    Response的元数据(比如http的status code,headers,cookies等,都被i封装到一个叫Response的对象中,并传给浏览器. status code:status co ...

  7. 使用bottle进行web开发(3):静态文件的获取

    静态文件(比如css啊,需要下载的各位文件等),需要通过static_file来操作,首先记得要在import中导入 @route('/static/<filename>') def se ...

  8. python bottle框架(WEB开发、运维开发)教程

    教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架 ...

  9. bottle+cherrypy快速开发web服务

    我目前用得最顺手的python web框架是bottle,简单方便. bottle有一个开发用的http服务器,效率不高,单线程,阻塞. 所以,得找个别的服务器来部署. 根据bottle官方的文档,发 ...

随机推荐

  1. springboot 入门2 开发环境与生产环境采用不同配置问题

    目开发中我们通常有两套配置信息  分别配置了我们的数据源信息等? 那么我们要如何不通过修改配置文件大量配置来实现简单的修改与配置来实现相关配置加载功能 首先springboot 有一个核心的配置文件a ...

  2. Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题

    Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...

  3. 剑指Offer - 九度1354 - 和为S的连续正数序列

    剑指Offer - 九度1354 - 和为S的连续正数序列2013-11-23 02:02 题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100. ...

  4. jmeter察看结果树响应数据中文乱码解决办法

    1.到jmeter目录文件中bin文件夹下找到jmeter.properties文件,该文件为jmeter配置文件.使用编辑工具打开它. 2.找到    #sampleresult.default.e ...

  5. Pytest框架介绍

    Pytest框架介绍.安装 pytest是python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,功能更强大 pytest特征 1:断言提示信 ...

  6. C#帮助类

    1.集合操作 // <summary> /// 判断一个集合是否包含某个值 /// </summary> /// <typeparam name="T" ...

  7. 孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库

    孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服 ...

  8. STL之set&multiset使用简介

    关于set,必须说明的是set关联式容器.set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注 ...

  9. Codeforces Round #326(Div2)

    CodeForces 588A 题意:Duff喜欢吃肉,想在接下来的n天,每天都有Ai斤肉吃,但每一天肉的单价Pi不定,肉 可以保存不过期,现已知n天每天肉的斤数Ai,以及单价Pi,为了使每天都   ...

  10. Axure+SVN——实现多人团队开发

    最近进行考试系统重构,一个小组十几个人,这么多人要同时搞需求画原型.这样原本的合作开发工具SVN已经不能满足现在的需求了,这是就找到了一个新的方法--Axure+SVN. 在SVN服务器端建立一个空的 ...