読み込んでいます...
2010年07月25日

最近看了一些Web.py的东西,主要是了解如何从无到有搭建一个Python网站,实际上很容易,但是有很多细节如果不注意的话,很容易让新人误入歧途,反而浪费时间。所以就在官方网站上参与了翻译,虽然英语不是很好,但是简单的翻译一下还是可以的。所以我不打算在自己的博客再写一些很基础的Web.py的文章,但是新人要看,所以丰富官方网站才是最好的途径。

传送门:http://webpy.org/cookbook/zh-cn

翻译倒不是完全翻译过来,里面还加了一些个人的理解和排除错误的方式,前面已经有很多同学做出辛苦的努力进行翻译了,我也只是进去凑个数,希望能够帮到更多的新人。

414路过 4评论 Python 阅读全文..

hmmm…最近一直在使用Python做开发,但是都是知其然而不知其所以然,所以自己研究一下如何搭建一个web,实际上很简单,不过中文文档不多,就纯当写一个笔记吧,高手路过。

web.py很简单,easy_install web.py就可以安装了,然后在python里import web就可以搭建一个web了,很简单吧,web.py默认就提供了web服务,所以只需要web.py就能跑一个网站了,不过,既然lighttpd专门去做web服务的,为何不直接让lighttpd去做呢。

实际上很简单,我们写一个简单的code.py文件如下。

#!/usr/bin/env python

import web
from controller.home import Home

urls = (‘/.*’, ‘Home’)

app = web.application(urls, globals())

if __name__ == “__main__”:
app.run()

上面的逻辑比较简单,就是定义urls和相应的Handler,定义完成之后我们就可以使用python命令来运行了,如python code.py,这样就起了一个服务,不过一直在python进程中,确实很不爽,所以就选择lighttpd。

装lighttpd很简单,可以自己装,装好之后编写lighttpd配置文件,编写如下(这里我也是了解如何编写lighttpd配置文件)。

#加载一些模块
server.modules = (
“mod_access”,
“mod_alias”,
“mod_accesslog”,
“mod_compress”,
)

server.modules += ( “mod_fastcgi” )
server.modules += ( “mod_rewrite” )

fastcgi.server = (“/routing.py” =>
((
“socket” => “/tmp/fastcgi-wen.socket”,
“bin-path” => “/Users/guojing/dev/webpy/routing.py”,
“max-procs” => 2,
“check-local” => “disable”,
)))
#如果是本机跑的话一定要定义check-local为disable
url.rewrite-once = (
“^/favicon.ico$” => “/favicon.ico”,
“^/(.*)$” => “/routing.py/$1″,
)
#定义根文档路径
server.document-root = “/Users/guojing/dev/webpy/htdocs”

编写完成后就可以使用lighttpd -f lighttpd.conf来启动lighttpd了。

PS:如果启动不成功,需要将routing.py设置相应的权限。

chmod 755 lighttpd.conf

代码下载:
webpy

578路过 2评论 Python 阅读全文..

今天做了一件事情,升级Pylons,众所周知,这个框架依赖太多第三方的库了,导致升级之后很多东西用不了,可以具体参考一下官方连接,升级基本的配置文件。

官方连接

首先需要升级完成config下的environment.py,middleware.py,routing.py三个文件,操作直接按照官方给的代码即可。如果对CacheMiddleware没特殊需求可以不需要添加pylons.cache._push_object(config['pylons.app_globals'].cache)到enviroment.py中。

修改完成之后,需要修改redirect_to和url_for,改动很大,这里需要全部替换名字。

改动:
redirect_to变成redirect
url_for变成url
url的import变为 from pylons import url

使用方法也改变,访问当前的地址为(不填写controller的情况下)
url.current(action=’xxxx’)

redirect使用方法如下,以前的方法无法使用
redirect(url(controller=’xxx’, action=’xxxx’))
redirect(url(‘xxxxxx’))

总之,升级成本还是很高的,需要测试的地方很多,这只是一个基本的升级过程。

注意:实际上升级到1.0首先需要从0.9.7升级到0.1.0,升级完成后,然后直接使用1.0的框架即可。
如果对于变量c报错,可以加上在config/enviroment.py中加上config['pylons.strict_tmpl_context'] = False

382路过 4评论 Python 阅读全文..