8535.com-新浦京娱乐场官网|欢迎您

新浦京娱乐场官网Python学习 - 编写一个简单的w

来源:http://www.dnamique.com 作者:计算机网络 人气:193 发布时间:2020-01-04
摘要:Python学习 - 编写贰个简便的web框架(二) 二个bottle.py的洗练实例 来寻访bottle是怎么着采纳的,代码来自:   复制代码 from bottle import route, run, template   @route('/hello/name') def index(name):    

Python学习 - 编写贰个简便的web框架(二)

二个bottle.py的洗练实例

来寻访bottle是怎么着采纳的,代码来自:

 

复制代码

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)

复制代码

很明显,bottle是应用装饰器来路由的。依照bottle的规划,小编来写三个精练的框架。

 

Python装饰器

装饰器,看名称就能够想到其意义正是包裹一个函数。在不订正函数的还要,动态的给函数增添效果。这里不在探究越来越多的内情。

 

大意的框架

传闻WSGI的概念,叁个WSGI应用必定假使可调用的。所以上面是二个WSGI应用的大约框架:

 

 

class WSGIapp(object):

 

    def __init__(self):

        pass

 

    def route(self,path=None):

        pass

     

    def __call__(self,environ,start_response):

        return self.wsgi(environ,start_response)

 

    def wsgi(self,environ,start_response):

        pass

 此中,route方法正是来保存url->target的。这里为了便于,将url->target保存在辞书中:

 

    def route(self,path=None):

        def decorator(func):

            self.routes[path] = func

            return func

        return decorator

此处return func注释掉也能够,求大神解释一下哟!!

 

下一场正是落实WSGIapp的各样方法:

 

复制代码

 

class WSGIapp(object):

 

    def __init__(self):

        self.routes = {}

 

    def route(self,path=None):

        def decorator(func):

            self.routes[path] = func

            return func

        return decorator

    

    def __call__(self,environ,start_response):

        print 'call'

        return self.wsgi(environ,start_response)

 

    def wsgi(self,environ,start_response):

        path = environ['PATH_INFO']

        print path

        if path in self.routes:

            status = '200 OK'

            response_headers = [('Content-Type','text/plain')]

            start_response(status,response_headers)

            print self.routes[path]()

            return self.routes[path]()

        else:

            status = '404 Not Found'

            response_headers = [('Content-Type','text/plain')]

            start_response(status,response_headers)

            return '404 Not Found!'

app = WSGIapp()

@app.route('/')

def index():

    return ['This is index']

@app.route('/hello')

def hello():

    return ['hello']

 

from wsgiref.simple_server import make_server

httpd = make_server('',8000,app)

print 'start....'

httpd.serve_forever()

- 编写叁个轻便的web框架(二) 四个bottle.py的简短实例 来看看bottle是怎么样行使的,代码来自: 复...

本文由8535.com-新浦京娱乐场官网|欢迎您发布于计算机网络,转载请注明出处:新浦京娱乐场官网Python学习 - 编写一个简单的w

关键词:

最火资讯