资讯专栏INFORMATION COLUMN

初识 Bottle (一)

mengbo / 948人阅读

摘要:安装是一个轻量型的不依赖于任何第三方库的框架,整个框架只有一个文件。向打声招呼吧新建一个文件在浏览器或者,,得到结果当使用装饰器绑定路由时,实际是使用了的默认应用,即是的一个实例。

1. 安装
bottle是一个轻量型的不依赖于任何第三方库的web框架,整个框架只有bottle.py一个文件。

wget http://bottlepy.org/bottle.py

2. 向bottle 打声招呼吧

新建一个文件hello.py

# coding:utf-8
from bottle import route, run

@route("/hello")
def hello():
    return "hello world"

run(host="localhost", port=8080, debug=True)

在浏览器或者postman, GET 127.0.0.1:8080/hello, 得到结果

当使用route装饰器绑定路由时,实际是使用了Bottle的默认应用,即是Bottle的一个实例。为了方便后续使用默认应用时采用route函数表示

from bottle import Bottle, run

app = Bottle()

@app.route("/hello")
def hello():
    return "Hello World!"

run(app, host="localhost", port=8080)
3. 路由

route() 函数连接url和响应函数,同时可以给默认应用添加新的路由

@route("/")
@route("/hello/")
def greet(name="Stranger"):
    return template("Hello {{name}}, how are you?", name=name)

run(host="localhost", port=8080, debug=True)

试一下
GET 127.0.0.1:8080/hello/hh
GET 127.0.0.1:8080/
将url中的关键字作为参数传入给响应函数获取响应结果

对于url中的关键字,可以进行属性的限制筛选匹配

@route("/object/")
def callback(id):
    if isinstance(id, int):
        return "T"

GET 127.0.0.1:8080/object/1
GET 127.0.0.1:8080/object/ss
后者将会出现404
同样,可以使用float,path,re正则表达式去filter参数,还可以自定义filter 条件,留意后续章节

4. http 请求方法

默认的route 将默认使用GET方法, 而POST等其他方法可以通过在route装饰器添加method参数或者直接使用get(), post(), put(), delete() or patch()等装饰器

from bottle import get, post, request, run

@get("/login") # or @route("/login")
def login():
    return """
        
Username: Password:
""" @post("/login") # or @route("/login", method="POST") def do_login(): username = request.forms.get("username", None) password = request.forms.get("password", None) if username and password: return "

Your login information was correct.

" else: return "

Login failed.

" run(host="localhost", port=8080, debug=True)

request.forms 会在request data 进一步细说

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38397.html

相关文章

  • 初识Bottle(二)

    摘要:而其他的引擎,例如能够帮我们进行验证登录自此,官网的我们已经大致有了了解后续我们可以选择运用该框架实现一些简单的应用,或者可以深入研究其源码,提升自身的编程水平 在初识Bottle(一)中,我们了解了Bottle的基本用法在Bottle源码阅读(一)和Bottle源码阅读(二)可以查看个人对bottle源码的相关阅读笔记 下面继续阅读Bottle的官方文档https://bottlep...

    stormjun 评论0 收藏0
  • Bottle源码阅读(

    摘要:在初识一中,我们了解了框架的基本用法。在本篇文章中,我们通过源码来探究一些基本原理。因此下一步就是研究我们写的应用函数是如何被封装成适配的 在初识bottle(一)中,我们了解了bottle框架的基本用法。在本篇文章中,我们通过源码来探究一些基本原理。 1. run的实现 所有的框架请求响应都基于一个原理http请求 --> wsgi服务器 --> wsgi接口(实际就是框架中自定义...

    whidy 评论0 收藏0
  • Bottle框架中的装饰器类和描述符应用

    摘要:最近在阅读微型框架的源码,发现了中有一个既是装饰器类又是描述符的有趣实现。所以第三版的代码可以这样写第三版的代码没有使用装饰器,而是使用了描述符这个技巧。更大的问题来自如何将描述符与装饰器结合起来,因为是一个类而不是方法。 最近在阅读Python微型Web框架Bottle的源码,发现了Bottle中有一个既是装饰器类又是描述符的有趣实现。刚好这两个点是Python比较的难理解,又混合在...

    Panda 评论0 收藏0
  • 使用python抓取百度漂流瓶妹纸照片

    摘要:无意中发现贴吧也出了个漂流瓶的东西,随手翻了翻发现居然有好多妹子图,闲来无事于是就想写个爬虫程序把图片全部抓取下来。具体获取一页内容的如下看参数很容易明白,就是当前页码,就是当前页中包含的漂流瓶数量。 showImg(https://segmentfault.com/img/bVLUTV?w=638&h=808); 无意中发现贴吧也出了个漂流瓶的东西,随手翻了翻发现居然有好多妹子图,闲...

    bang590 评论0 收藏0
  • Bottle源码阅读(二)

    摘要:在源码阅读一中,我们了解了如何接收请求,处理请求以及如何检测模块变化重启。接下来我们看一下源码是怎么实现的经过封装后,最终获得的是具备有一些属性的装饰器当为时,将的属性传递给,使其具备相同的属性。 在《Bottle源码阅读(一)》中,我们了解了bottle如何接收请求,处理请求以及如何检测模块变化重启server。在ServerHandler类中的run函数中,application接...

    zzbo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<