• web 框架本质


    类容(___大纲___):

      Web 框架本质  


    Web 框架本质

    web 框架本质:

      浏览器: socket 客户端

      服务器:socket 服务端

     1.Socket 服务端

      对于所有的Web应用. 本质上其实就是一个socket服务端. 用户的浏览器其实就是一个socket客户端.  

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    __Mtime__ = '2018/1/28'
    
    import socket
    
    def handle_request(client):
        buf = client.recv(1024)
        client.send(b"HTTP/1.1 200 OK
    
    ")
        client.send(b"Hello ")
    
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.bind(('localhost', 8000))
        sock.listen(5)
    
        while True:
            connection, address = sock.accept()
            handle_request(connection)
            connection.close()
    
    if __name__ == '__main__':
        main()
    

      对于真实开发中的python web程序来说.一般会分为两部分:服务器程序和应用程序

        服务器程序:负责对socket服务器进行封装.并在请求到来时.对请求的各种数据进行整理.

        应用  程序:则负责具体的逻辑处理

      为了方便应用程序的开发.就出现了众多的Web框架.例如:Django、Flask、web.py 等.不同的框架有不同的开发方式.开发出的应用程序都要和服务器程序配合.才能为用户提供服务.这样.服务器程序就需要为不同的框架提供不同的支持.对服务器来说.需要支持各种不同框架.对框架来说.只有支持它的服务器才能被开发出的应用使用.这时候.标准化就变得尤为重要.我们可以设立一个标准.只要服务器程序支持这个标准.框架也支持这个标准.那么他们就可以配合使用.一旦标准确定.双方各自实现.这样.服务器可以支持更多支持标准的框架.框架也可以使用更多支持标准的服务器. - [运行: 然后在浏览器上输入:127.0.0.1:8000. 会返回:hello]

     2.Bottle 框架大致可以分为一下部分

      Bottle是一个快速、简洁、轻量级的基于WSIG的微型Web框架. 此框架只由一个 .py 文件. 除了Python的标准库外. 其不依赖任何其他模块  

    pip install bottle
    easy_install bottle
    apt-get install python-bottle
    wget http://bottlepy.org/bottle.py
     : 路由系统 - 将不同请求交由指定函数处理
     : 模板系统 - 将模板中的特殊语法渲染成字符串.值得一说的是Bottle的模板引擎可以任意指定:Bottle内置模板、mako、jinja2、cheetah
     : 公共组件 - 用于提供处理请求相关的信息. 如:表单数据、cookies、请求头等
     : 服务 - Bottle默认支持多种基于WSGI的服务. 如下:
    server_names = {
    	'cgi': CGIServer,
    	'flup': FlupFCGIServer,
    	'wsgiref': WSGIRefServer,
    	'waitress': WaitressServer,
    	'cherrypy': CherryPyServer,
    	'paste': PasteServer,
    	'fapws3': FapwsServer,
    	'tornado': TornadoServer,
    	'gae': AppEngineServer,
    	'twisted': TwistedServer,
    	'diesel': DieselServer,
    	'meinheld': MeinheldServer,
    	'gunicorn': GunicornServer,
    	'eventlet': EventletServer,
    	'gevent': GeventServer,
    	'geventSocketIO':GeventSocketIOServer,
    	'rocket': RocketServer,
    	'bjoern' : BjoernServer,
    	'auto': AutoServer,
    }

      框架基本使用:  

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from bottle import template, Bottle
    root = Bottle()
     
    @root.route('/hello/')
    def index():
        return "Hello World"
        # return template('<b>Hello {{name}}</b>!', name="Alex")
     
    root.run(host='localhost', port=8080)
    
      • 相关系统使用方法:http://www.cnblogs.com/wupeiqi/articles/5341480.html

      WSGI(Web Server Gateway Interface)是一种规范. 它定义了使用python编写的web app与web server之间接口格式.实现web app与web server间的解耦.

      Python标准库提供的独立WSGI服务器称为wsgiref【web 框架的开发者用以下进行开发】- [运行: 然后在浏览器上输入:127.0.0.1:8000.会返回:hello web!] 

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    __Mtime__ = '2018/1/28'
    
    from wsgiref.simple_server import make_server
    
    def RunServer(environ, start_response):
        #   environ:    用户请求相关信息
        #   start_response: 设置用户响应相关信息
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [bytes('<h1>Hello  web!</h1>', encoding='utf-8'), ]
    
    if __name__ == '__main__':
        httpd = make_server('127.0.0.1', 8000, RunServer)
        print("Serving HTTP on port 8000...")
        httpd.serve_forever()
    

     

     3.现成的Web框架:Bottle Flask Tornado Django....

       ====> 我们.

      分类(功能齐全进行分类. Django是最齐全的.):

        Django

        Bottle、Flask、Tornado、Webpy...

                                                                           .

  • 相关阅读:
    文件读写,尝试filestream和streamreader,streamwriter
    打印控件ScriptX,手动安装ScriptX插件说明 只兼容IE
    JS 循环获取Repeater 中Checkbox1被选中的值
    页面传值出现乱码问题 window.showModalDialog()
    无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever
    js 获取时间给时间控件赋值
    css 固定在窗口底端
    后台转换JSON格式。ToJson
    JS 匿名函数的使用2
    JS 匿名函数的使用1
  • 原文地址:https://www.cnblogs.com/Tranduil/p/8371699.html
Copyright © 2020-2023  润新知