1、安装Pecan
更改pip镜像源
mkdir ~/.pip
echo """
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
""" >> ~/.pip/pip.conf
cat ~/.pip/pip.conf
执行pip安装
pip install pecan
2、创建pecan项目
luckylau@luckylau-Ubuntu:~$virtualenv pecan-env
luckylau@luckylau-Ubuntu:~$cd pecan-env/
luckylau@luckylau-Ubuntu:~/pecan-env$ source bin/activate
(pecan-env) luckylau@luckylau-Ubuntu:~/pecan-env$ pip install pecan
(pecan-env) luckylau@luckylau-Ubuntu:~/pecan-env$ pecan create test_project
(pecan-env) luckylau@luckylau-Ubuntu:~/pecan-env$ tree test_project/
test_project/
├── config.py
├── MANIFEST.in
├── public #一些静态文件包括CSS,JS,images,为你的开发服务
│ ├── css
│ │ └── style.css
│ └── images
│ └── logo.png
├── setup.cfg
├── setup.py
└── test_project #基于MVC模型生成的结构
├── app.py #决定应用是如何创造的,这个文件必须包含set_app()并返回WSGI应用对象,一般情况下就用原生的,除非不能满足你定制的应用。
├── controllers #控制层实现
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── root.py
│ └── root.pyc
├── __init__.py
├── __init__.pyc
├── model #模型实现
│ ├── __init__.py #在这里可以加入与database交互,定义表和ORM等
│ └── __init__.pyc
├── templates #模板实现
│ ├── error.html
│ ├── index.html
│ └── layout.html
└── tests #单元测试
├── config.py
├── __init__.py
├── test_functional.py
├── test_units.py
└── test_units.pyc
8 directories, 23 files
我们通过实际操作中补充pecan相关知识点。项目托管到github:
https://github.com/Luckylau/python-web-frame
http://luckylau.tech/2017/03/01/python的pecan框架使用/
3、WSGI
http://python.jobbole.com/88653/
WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。server和application的规范在PEP 3333中有具体描述。要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有Torando,Flask,Django
web应用的本质
1)浏览器发送一个HTTP请求
2)服务器收到请求,生成一个HTML文档
3)服务器把HTML文档作为HTTP响应的body发给浏览器
4)浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示
上面的web应用过程,如果由我们自己来实现是复杂的,接收HTTP请求,解析HTTP请求,响应HTTP请求等。通常这些操作都由WSGI服务器来完成,WSGI(Web Server Gateway Interface)定义了WSGI服务器执行的接口,我们只需要编写服务WSGI规范的接口,然后由WSGI服务器来执行,就可以了。
WSGI接口编写示例
def application(environ,satrt_response):
start_response('200 OK',[('Content-Type','text/html')])
return '<h1>Hello,web!</h1>'
上面的application()函数就是符合WSGI标准的一个HTTP处理函数
参数说明:
environ:包含HTTP请求信息的dict对象
satrt_response:发送HTTP响应的函数
函数说明:
start_response(‘200 OK’, [(‘Content-Type’, ‘text/html’)])
发送HTTP响应的Header,Header只能发送一次,意思是start_response函数只能执行一次。
'200 OK’是HTTP响应码参数,[(‘Content-Type’, ‘text/html’)]表示HTTP Header,函数的返回值作为HTTP响应body发送给服务器。
4、 为什么用pecan
Pecan是一个路由对象分发的oython web框架。本质上可以将url通过分割为每一部分,然后对每一部分查找对应处理该URL部分的处理类,处理后,继续交给后面部分的URL处理,直到所有URL部分都被处理后,调用最后分割的URL对应的处理函数处理。