bottle 私人教程

背景

win8

安装

下载bottle.py,放在工作目录下。
下载地址

还是安装好。再配上安装命令:

pip install bottle # 这是我们最推荐的安装方式

或者:

easy_install bottle # 如果没有pip,可用这个方式  

成功截图:

推荐网页(Bottle文档最新翻译版-1.1.1安装Bottle框架 - 铂金小马的个人空间 - 开源中国社区)会提到sudo,在windows下不能用,用了要出错。

配置

使用

在代码中加入import bottle即可使用。

体验

@route()

route函数在class Bottle下面,函数:

def route(self, path=None, method='GET', callback=None, name=None,
          apply=None, skip=None, **config):  

使用中:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello </b>!', name=name)

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

这里route后面的参数,可能是函数定义中的path。
函数里关于route的说明:

        """ A decorator to bind a function to a request URL. Example::

            @app.route('/hello/:name')
            def hello(name):
                return 'Hello %s' % name

        The ``:name`` part is a wildcard. See :class:`Router` for syntax
        details.

        :param path: Request path or a list of paths to listen to. If no
          path is specified, it is automatically generated from the
          signature of the function.
        :param method: HTTP method (`GET`, `POST`, `PUT`, ...) or a list of
          methods to listen to. (default: `GET`)
        :param callback: An optional shortcut to avoid the decorator
          syntax. ``route(..., callback=func)`` equals ``route(...)(func)``
        :param name: The name for this route. (default: None)
        :param apply: A decorator or plugin or a list of plugins. These are
          applied to the route callback in addition to installed plugins.
        :param skip: A list of plugins, plugin classes or names. Matching
          plugins are not installed to this route. ``True`` skips all.

        Any additional keyword arguments are stored as route-specific
        configuration and passed to plugins (see :meth:`Plugin.apply`).
    """

主要作用是:将特定的功能绑定到请求的url上。
提到:

HTTP method (GET, POST, PUT, ...)

这些是http方法。搜“http方法 get”,在HTTP 方法:GET 对比 POST

两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

在bottle里的函数定义:

    def get(self, path=None, method='GET', **options):
        """ Equals :meth:`route`. """
        return self.route(path, method, **options)

    def post(self, path=None, method='POST', **options):
        """ Equals :meth:`route` with a ``POST`` method parameter. """
        return self.route(path, method, **options)

    def put(self, path=None, method='PUT', **options):
        """ Equals :meth:`route` with a ``PUT`` method parameter. """
        return self.route(path, method, **options)

    def delete(self, path=None, method='DELETE', **options):
        """ Equals :meth:`route` with a ``DELETE`` method parameter. """
        return self.route(path, method, **options)

get是函数,GET是http方法。

教练培炎关于bottle安装与否的解释:

python import一个库,必须到一些地方去找这个库,这些地方就是它的搜索路径,之所以可以放在同一个目录,是因为当前目录总是默认的搜索路径之一,默认路径还包括系统的标准库路径,如果有特殊需求,可以对搜索路径进行设置。
目录什么的,就是个表象,根本的是这个东西能不能被找到,与主程序目录相同只能说是自然且合理的选择。“所以它的搜索过程是先当前工作目录然后才是py程序所在目录?”据我观察,是的,但不排除版本和系统可能有差异。