浏览 6533 次
锁定老帖子 主题:pylons建站日记1_第一次亲密接触
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-01
打算写一个抓新闻的网站,可以把那些新闻打包为纯文本,下载到pda上慢慢看. 行事先利其器,先选一个框架. 以前用了一段时间的Django,觉得它的自动化程度比较高,很适合快速开发,但是有利就有弊,相对而言,我觉得其不足有: 1.其ORM对于一些简单的应用还是不错,但是对于多表的操作就没有sqlalchemy优雅. 2.模板和代码完全分离从出发点看来是不错,但是这样做带来的缺点就 a.编写麻烦 b.会有许多琐碎的自定义标签 此外,对于我这种页面和代码统统负责的孤家寡人来说有点画蛇添足 我的观点是,总有许多一次性的代码,把这些代码扔进页面是不错的选择. 听说mako效率不错,想看看 3.newform有种鸡肋的感觉 4.文件上传集成到Model中的做法不是很灵活 5.url映射不够智能,太繁琐 等等 于是,去看看pylons,听说它是自由度比较高. 我先从svn中checkout出pylons的源代码,安装,如同python的安装惯例 setup.py install 然后又去checkout出sqlalchemy和mako的代码装上(追新族:),方法类似.(mako好像自带了,可以不装,不过不是最新版) 我列举一下svn地址,以便安装 pylons http://pylonshq.com/svn/Pylons/trunk mako http://svn.makotemplates.org/mako/trunk sqlalchemy http://svn.sqlalchemy.org/sqlalchemy/trunk 然后将python安装路径下的Scripts目录加入系统的PATH环境变量,正式开工. 先创建项目,在命令行下切换到一个合适的路径,执行如下的命令,其中shot_net为项目名,可以自己取. paster create --template=pylons shot_net 它会自动的创建一个项目的目录,我们cd进入该目录,执行 paster serve --reload development.ini 启动它自带的服务器,命令行中会告诉你端口,可以到development.ini中修改(如下),我修改为19809. [server:main] use = egg:Paste#http host = 0.0.0.0 port = 19809 现在访问那个端口,可以看到这个网页 "Welcome to your Pylons Web Application" 可以看到其下当前路径下有一个与项目同名的目录,我们进入该目录下的public目录。 public目录是用来查找静态文件的。 新建一个index.html文件替换原来那个,刷新,ok,可以看到我们自己的index.html文件了。 也可以通过 http://127.0.0.1:19809/index.html 访问 然后类似下面,创建一个controller D:\myWay\project\shot_net\shot_net>paster controller get_html Creating D:\myWay\project\shot_net\shot_net\controllers\get_html.py Creating D:\myWay\project\shot_net\shot_net\tests\functional\test_get_html.py 现在访问 http://127.0.0.1:19809/get_html/ 就可以看到 Hello World 这个路径是自动映射的,真不错:) 然后修改shot_net/config/routing.py中的make_map,加上这么一句,注意要加在其他的connect之前 map.connect('', controller='get_html', action='index') 删除那个index.html,现在http://127.0.0.1:19809/也可以看到Hello World了. 然后照搬教程,在GetHtmlController类中添加如下的函数 这个函数中的c是用来向模板传递变量的东西,满hacker的:) def serverinfo(self): import cgi import pprint c.pretty_environ = cgi.escape(pprint.pformat(request.environ)) c.name = 'The Black Knight' return render('/serverinfo.mako') 到templates目录下新建一个serverinfo.mako模板(我统一用utf-8编码,不加BOM) <h2> Server info for ${request.host} </h2> <p> The URL you called: ${h.url_for()} </p> <p> The name you set: ${c.name} </p> <p>The WSGI environ:<br /> <pre>${c.pretty_environ}</pre> </p> 访问 http://127.0.0.1:19809/get_html/serverinfo OK,可以看到一堆信息. 仔细看看,有意思的有 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 表明网页是被压缩了的,自带这个功能,不错不错:) OK,先看这么多.我去写一个页面模板. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-20
我觉得mako的语法太那个了,我用的是genshi,用的是纯的xml,可以在浏览器里浏览,这样的话页面设计和业务逻辑的耦合度就比较低。
|
|
返回顶楼 | |
发表时间:2008-12-02
http://pylonshq.com/svn/Pylons/trunk
这个地址无效了。 |
|
返回顶楼 | |
发表时间:2008-12-02
[zuroc@zgu pylons]$ hg pull
pulling from http://pylonshq.com/hg/pylons-dev/ |
|
返回顶楼 | |