📜  烧瓶 - Python (1)

📅  最后修改于: 2023-12-03 15:27:04.713000             🧑  作者: Mango

烧瓶 - Python

简介

烧瓶(Bottle)是一个轻量级的Python Web框架。它没有任何依赖,只需要一个Python解释器就可以使用。烧瓶非常易于上手,适合编写小型Web应用程序。

烧瓶极其灵活,与许多常见的Python Web框架比较,它更加轻巧,代码更加紧凑,但功能完备。

安装

通过pip可以安装烧瓶:

pip install bottle
入门示例

一个简单的烧瓶Web应用程序,展示了一个“Hello World”消息:

from bottle import route, run

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

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

这个应用程序使用了两个烧瓶的装饰器。’@route(‘/’)' 装饰器绑定了‘/’ URL路径到hello()函数。在这个示例中,没有请求参数,但是,如果有,就可以指定这些参数(例如‘/hello/:name’)并使用带有参数的函数来处理它们(例如‘def hello(name)’)。

‘run()’函数使我们的应用程序运行于本地主机的端口8080上。debug模式‘True’不是必需的,但是它确实启动了一个交互性调试器。这个应用程序现在可以通过http://localhost:8080/ 在我们的浏览器中访问。

路由

烧瓶的路由是处理HTTP请求的核心。路由是一个URL、HTTP动作GET、POST等和一个Python函数的映射。默认情况下,如果应用程序的请求路径不在路由内,则烧瓶返回404错误响应。

在路由中使用装饰器声明路由:

@route('/hello')
def hello():
    return "Hello World!"
使用参数

可以使用参数在路由上作更强大的绑定:

@route('/hello/:name')
def hello(name):
    return "Hello %s!" % name

假设我们的应用程序已经在运行,那么浏览器访问http://localhost:8080/hello/World将会返回'Hello World!'。

HTTP方法

烧瓶通过装饰器提供了一种确定HTTP方法的方法。

@route('/login', method='POST')
def login():
    username = request.forms.get('username')
    password = request.forms.get('password')
    return do_login(username, password)

上述代码处理POST请求,获取表单数据并调用do_login()函数。

模板

烧瓶支持许多不同的模板引擎,包括Python默认的字符串格式化,Jinja2等。默认情况下,烧瓶使用Python默认的字符串格式化。

在你的应用程序的根目录下创建一个‘views’目录,并将HTML文件放在其中。

<!doctype html>
<html>
    <head>
        <title>{{title}}</title>
    </head>
    <body>
        <h1>{{header}}</h1>
        <ul>
            % for item in items:
            <li>{{item}}</li>
            % end
        </ul>
    </body>
</html>

要呈现此模板,将‘template’函数装饰为烧瓶。

@route('/test')
def test():
    title = "Test"
    header = "Welcome"
    items = ["One", "Two", "Three"]
    
    return template('views/test', title=title, header=header, items=items)

在这里,我们指定的烧瓶将明确使用视图‘views/test’。视图变量传递给模板通过参数。

静态文件

可以在“static_files”目录中添加静态文件,烧瓶将自动地使它们可用:

@route('/static/<filename:path>')
def static(filename):
    return static_file(filename, root='/path/to/static/files')

在这个例子中,请求的URL ‘/static/logo.jpg’ 将映射到“/path/to/static/files/logo.jpg”。

结论

烧瓶是一个轻量级的Python Web框架,非常适合初学者或者小型Web应用程序。它对于大型,高流量的应用程序可能存在扩展性问题。但是,对于许多应用程序来说,烧瓶是一个非常好的选择。

通过学习这个入门示例和路由,模板和静态文件的简单介绍,你已经可以开始编写自己的烧瓶Web应用了!