http:kanrs.com3

    技术2022-05-20  29

    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.py dev_server.py simple_server.py

    init_app.py 用于初始化网站。

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

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

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

    其他的目录结构如下

    myconf myfile mylib mysite

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

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

    ctrl model modeltest htm util

    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


    最新回复(0)