python学习笔记-Day17 - web框架

web服务器和web客户端之间的网络通信,本质上是 socket的通信, 服务器端运行的是socketServer 客户端运行的是socketClient.


对于python web程序来说,一般来说会分为两部分,服务器程序\应用程序,  (jsp好像也是这样的,让我想起了java的war包,不是太了解,只知道这些war包可以组成jsp上的应用).

服务器程序:负责对socket服务器进行封装,在请求到来的时候,对请求进行整理,

应用程序   : 负责具体的业务逻辑处理,


为了方便应用程序的开发,出现了很多web框架, python的web框架有 django flask web.py tornado等等

不同的框架的开发方式不尽相同, 但都需要 应用程序和服务器程序配合使用, 并为用户提供服务.

但是服务器要为不同的框架提供支持,如果没有一个统一的标准, 那么局面会很混乱,无论对服务器还是对于框架 都是不好的, 关键是开发会很累. 所以标准很重要, 

按照一个统一的标准进行开发, 如果服务器程序 和 应用程序都支持这个统一的标准, 那么两者就可以配合使用,一旦标准确定, 双方各自实现,(就好像螺丝钉 和螺帽 )


这样服务器可以支持更多支持该标准的框架  ,框架也可以使用更多 支持标准的服务器   (互利互惠)



WSGI(Web Server Gateway Interface) 是Web服务器与Web应用程序或应用框架之间的一种低级别的接口,可以提升可移植Web应用开发的共同点.


WSGI就像是一座桥梁,一边连着web服务器,另一边连着用户的应用。但是呢,这个桥的功能很弱,有时候还需要别的桥来帮忙才能进行处理。



    SERVER <--->   wsgi  <--->   APP


我们可以先写一个简单的框架:


struct.py

#!/usr/bin/env python
#coding:utf-8
from wsgiref.simple_server import make_server
 
def index():
    return 'index'
 
def login():
    return 'login'
     
urlpatterns = [
    ('/index/',index),
    ('/login/',login),
]
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    url = environ['PATH_INFO']
    func = None
    for item in urlpatterns:
        if item[0] == url:
            func = item[1]
            break
    if func:
        return func()
    else:
        return '404 not found'
     
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()



模板引擎:

参考jinja2 http://timesnotes.blog.51cto.com/1079212/1748411 




在使用web框架的时候,我们需要注意两个名字 MVC  MTV(不是music TV)


MVC : 指的是 模型-视图-控制器 模式 

# models          views        controllers

# 数据库处理    html模板          处理请求(函数)


MTV : 指的是 模型-模板-视图 模式 

# models          templates     views

# 数据库处理      html模板     处理请求(函数)


你可能感兴趣的:(java,python,web服务器,客户端,应用程序)