http://kanrs.com/3_0.html

来源:互联网 发布:美国毒品泛滥 知乎 编辑:程序博客网 时间:2024/05/18 09:55

http://kanrs.com/3_0.html

 

麻油四喜欢花花草草。

没有花花草草喜欢他。

群芳丛中过,片叶不沾身。

人常道:没有谈过恋爱的大学,是不完整的。

生命如此短暂而宝贵,麻油四不想留下遗憾。

一点儿遗憾也不想要。

某日,他和同样孑然一身的阿牛对酒言愁。

说着说着,阿牛提议:“来写个学校的交友网站吧,广结天下良缘,也算是一种善事。”

“好啊,好啊”,麻油四终于不胜酒力,醉卧沙场。

麻油四深深地吸了口清晨的空气,从他枕边发现了阿牛留下的字条和小册子。

字条上只有八个字:“看懂册子 过来找我”。

又是一本破旧的小册子,封面上写着“Python写网站入门 作者:阿牛”,麻油四翻看了起来。

一座高山,一位老人,一个少年。

“用Python写网站,最可怕的技术是什么?”少年问老人:“是不是名动天下的Zope?”

“以前也许是,现在却不是了。”

“为什么?”

“因为Zope自从1996年初出江湖,到如今已经有十多年。十年的光阴,足以让许多事情改变。”老人黯然叹息。

“那个企业应用为王的时代已经过去,那些复杂而厚重的框架,已日渐衰落。”

少年仰望高山,山巅白云悠悠。

“那是什么?”少年又问老人:“是不是插件众多的Django?”

“不是。”

“是不是很小很轻量的web.py?”

“不是。”

“是不是Pylons?”

“不是。”

“是不是Facebook发布的Tornado?”

“不是。”

“我想起来了。”少年说得极有把握:“是世界上最大的纯Python网站--豆瓣,用的Quixote。”

“也不是,”老人道:“你说的这些技术虽然都很可怕,却不是最可怕的一种。”

“最可怕的一种是什么?”

“是WSGI, 一个接口与两个参数。”

“一个接口?”少年惊奇极了:“当今天下,用Python写网站,最可怕的技术只有一个接口与两个参数?”

“是的。”

学Python ,三天就可以上手了。(Python教程 链接 )

Google、Yahoo、YouTube、NASA(美国航空航天局)、FriendFeed、豆瓣、网易游戏、搜狐邮箱,都是Python的忠实用户。

而用Python写网站,选择丰富。常见的有:

Zope,早期的Python框架,著名的Plone内容管理系统(CMS)基于其开发,用户包括GE、美国海军、波士顿在线,和Java类似,Zope也有一套自成体系的服务器,数据库。

Quixote,也是一个早期的Python框架,豆瓣网(douban.com)基于其开发,它的起源是因为用Zope写的代码难以维护和调试。

Django,当下最流行的Python框架,玩聚网(ju690.com),好看簿(haokanbu.com)基于其开发,它能自动生成一套后台管理的界面,很适合用于快速完成小项目。

web.py,非常轻量级的一个Python框架,sohu邮箱基于其开发,它也常用于嵌入式设备。

Pylons,由各种Python库整合而成的框架,reddit.com 基于其开发,基于WSGI,可定制性好。

还有一些比较特别的框架,比如

Facebook(FriendFeed部门)发布的Tornado http://www.tornadoweb.org/

IBM(Second Life部门)发布的Mulib http://wiki.secondlife.com/wiki/Mulib

国人沈崴的Eurasia http://code.google.com/p/eurasia/

这三款框架共同的特点是支持大量并发的连接,写网页游戏,网页聊天室不妨考虑一下它们。

事实上,用Python按照自己的需求,搭建一个框架是非常轻松的事情,以至于有篇文章教你用3个小时,60行代码编写一个垃圾框架(http://code.google.com/p/robaccia/ ,robaccia,意大利语的垃圾)。

好吧,还是先从环境配置开始。首先,安装Python。

然后安装MySQL-Python,用于连接MySQL数据库。

MySQL-Python迟迟没有发布Python2.6的官方Windows编译版,所以从http://www.codegood.com/archives/4 下载非官方编译的Python2.6版的MySQL-Python 链接 安装。

安装完MySQL-Python后,下载 http://peak.telecommunity.com/dist/ez_setup.py 双击运行,这样就安装了Python的包管理。

然后在我的电脑上右键点击

--> 属性

--> 高级

--> 环境变量 -- 系统变量 -- Path -- 双击出现编辑框

--> 在已经内容的结尾加上 ;C:/Python26/Scripts;C:/Python26/;

--> 点击确定

--> 点击环境变量页面的确定

如图所示

设置环境变量
图:设置环境变量

开始 --> 运行 --> 输入 cmd --> 输入

easy_install -U mypy

就可以安装我们用到的网站开发框架mypy -- 一个在WSGI基础上搭建起来框架。

WSGI是一种协议规范,一个最简单的WSGI程序仅需要几行代码:

def application(environ, start_response):     status = '200 OK'     response_headers = [('Content-type','text/plain')]     start_response(status, response_headers)     return ['Hello']

它有两个参数,environ和start_response。

environ参数是一个内建的python字典类型, 用于传递变量,比如REQUEST_METHOD,各种中间件的扩展变量。

start_response则是一个函数,参数为状态码和响应的header。

函数的返回值是一个列表,也是网页的正文。

WSGI简单易扩展,符合Python的哲学 -- Pythonic 。

WSGI的基础上,延伸出各式各样的中间件,你可以组装出你需要的功能。事实上,世上所有的框架本来都只不过是一些零碎的组件,一定要拼凑在一起之后,才会成称为框架。

只是,不要试图去找一个无所不能,举世无双的框架。

很多人都错在了这一点,他们执着于框架的优劣。

他们希望找一个好的框架,大幅提高开发效率,保证项目进度,超越性能瓶颈,消灭网站漏洞。

他们在论坛上口水战,在博客中相互鄙视,自以为掌握了通往天国的钥匙。

然而,“银弹”这两个字根本就不存在,那只不过是某些自大狂妄的人,心里的一种幻觉,他们迟早都必将死在自己的这种幻觉中。

框架是程序员手中的兵器。

兵器是死的。

好的兵器,只有在最聪明的人的手里,才能显示其无比威力。

还是先从mypy框架说起 -- 首先,新建一个项目。

python -m mypy.cmd new ppmm

这里ppmm便是项目名称。在生成的ppmm目录下,可以看到有三个python文件:

init_app.pydev_server.pysimple_server.py

init_app.py 用于初始化网站。

simple_server.py,是一个简单的纯Python服务器,默认端口是9888。

dev_server.py 是开发用的服务器,当修改网站中Python文件时,会自动重启,默认端口是9889。

运行dev_server.py,访问 http://127.0.0.1:9889 ,就可以看到默认的提示页面了。

其他的目录结构如下

myconfmyfilemylibmysite

myconf,配置文件所在的路径;myfile,静态文件所在路径;mylib,定制的Python库所在路径。

mysite 中为网站代码,其中又有四个目录:

ctrlmodelmodeltesthtmutil

ctrl,control的缩写,这里写页面相关的逻辑。

model,操作数据库的后台逻辑代码所在目录。

modeltest,后台逻辑单元测试代码所在目录。

htm,放置网页模板。

util,公用的函数,如分页等。

接下来,开始写一个基本功能 -- 用户注册。

大家可以先用SVN检出 http://mayoufour.googlecode.com/svn/trunk/stdyun/ 。

这里是最终项目的代码,可以边学边对比。

运行它需要配置一些数据库,参见 3.3小节,数据库,ORM 与 单元测试 。

配置完数据库,导入stdyun/mytool/create_table下的tabel.sql,便可以运行。导入的命令如下:

mysql -u用户名 -p密码 数据库名 < tabel.sql