Bottle是一个超轻量级的Python库。据说库本身只由一个4000行左右的文件组成,不需要任何依赖,只能对python标准库进行操作。Bottle库虽然便携,但使用起来很简单。相信在阅读本文之前,读者已经对python有了一个简单的了解。那么究竟是怎样玄乎的操作,才能用一百行代码就完成一个服务器的功能呢?让我们拭目以待。一。Bottle库安装1)使用pip安装2)下载Bottle文件https://github.com/bottlepy/b...二。“你好世界!”所谓万事俱备HelloWorld,从这个简单的例子中,了解Bottle的基本机制。首先上代码:首先,我们从bottle库中导入get和run方法。接下来,我们需要建立一个网站。首先,我们要有一个ip地址和一个端口(port)。这部分功能由run完成。在测试会话中,我们使用127.0.0.1(本地地址)和80端口(浏览器默认端口)来:运行这段代码pythonHelloWorld.py以便网站服务器运行。打开浏览器输入熟悉的404127.0.0.1(:80),报错Notfound:'/'。这是当然的,因为除了服务器,网站还有一个很重要的组成部分——网页!当浏览器访问该ip地址时,向该ip发送get请求,等待返回网页数据。然后我们的bottle库封装了get方法来实现这个过程。代码如下:不知道大家知不知道def上面的@符号。这个符号在python语法中表示装饰器。可以简单理解为使用get函数修改首页。这里@get('/')会在浏览器发送GET127.0.0.1/请求时将首页装饰成对应的函数。可以做任何处理,最后把response返回给get请求。这里返回了简单的HelloWorld页面。再次运行会有这样的效果:也可以使用bottle中封装的模板方法,将网页数据单独写入.tpl文件中。示例如下:run函数还有一个参数reloader,设置为True会开启自动重新加载,web服务器会在你做任何改动时自动重新加载服务器,实现网站的热更新。三。动态路由和文件下载上面我们使用的get('/')本质上是静态路由。服务器运行前确定的地址可以通过这种方式进行路由。那么如果服务器正在运行呢?比如访问网站服务器上的文件,当然不能采用静态的方式。这时候,我们可以使用动态路由。Bottle的动态路由是通过route方法实现的。和get类似,也是使用装饰器修饰函数,实现路由功能。在这里,我们在装饰器的参数中看到了一些不寻常的东西:'name'。它所修饰的函数的参数与冒号后面的参数同名,在函数中,参数名可以作为处理变量,最后返回response。动态路由可以促进文件路由。一台服务器中可能存储着成百上千个文件,不可能每一个都依赖静态地址。这里我们可以看到一个新的函数static_file,第一个参数是文件名,第二个参数是根目录地址(也就是文件所在的位置),当前文件系统为:--HelloWorld.py--商店1。txt访问浏览器获取。当然你也可以把文件放到文件夹里,只需要将root参数替换成文件夹的地址即可。四。POST响应和文件上传如果我们要实现更复杂的功能,不仅要用到GET方法,还要用到POST方法。这里我们使用HTML语言中的Form来演示Bottle库对POST请求的响应。首先,我们实现一个用于上传文件的窗口,如上。这里的页面是一个简单的表单提交界面,这里不再详细介绍。打开页面如下:下一个POST响应,代码如下:从Bottle库中导入post方法和request。与get方法类似,使用post修饰response函数,然后在函数体中使用request获取网站服务器收到的post请求体。request.forms.get()方法可以取出表单中Key对应的字符串,request.files.get()方法可以取出表单中Key对应的文件,使用save方法保存存储数据,实现文件上传。接下来我们进行测试:点击上传后,我们打开服务器的根目录(也就是python文件所在的位置),查看文件是否上传成功!五。总结完成这些功能后,你肯定想把bottle部署到网络上。毕竟,如果只是在本地运行,网站有什么用呢?清华网为我们每个网络接入点提供公网ip。在cmd中使用ipconfig查看ip地址,将run中的运行参数改成你的公网ip,然后在任意设备上打开浏览器(推荐手机,电脑浏览器有时很慢)输入ip地址和端口number(默认80),就可以访问了!Bottle库还有很多强大的功能,比如读写cookies,安装、卸载和禁用插件,还可以将Bottle部署到其他服务器上,实现多线程非常简单。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。
