首先感谢webpy作者Aaron H. Swartz (1986 – 2013)。
第一次接触Python开发网站是在今年3月底,使用的是Django,当时也是第一次接触网站开发,对Apache也不熟悉(其实是只知道一个名字),当时的各种配置让我感觉到要崩溃了,好歹在windows下配置成功了一次。后来在linux下死活都不行,原来是忘了chown py文件给apache,现在记忆犹新。Django呢,确实很完善,文档也不少,在目前算是python web框架中用的最多的,也是最火的。不过我倒不太喜欢这种各种被包办被绑架的感觉,后来一直都在找python web框架,无奈就那些,也可能是自己了解不多。不过,有个我也忘了是怎么回事的机缘,让我有兴趣了解了下webpy,感觉比较符合我自己的口味。简单,明了。前段时间用PHP开发了一个微信公众平台的小网站,现在再来看Python web开发也更熟悉吧。言归正传,开始webpy的Hello World(好吧,其实是官网上的代码,我再加点修饰)。关于window 64bit下的python web开发环境的搭建请参考Windows 64bit下安装Apache+Python+mod_wsgi+php。
webpy安装
Hello webpy!
import web
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not name:
name = 'webpy'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
static/
js/css/images/
templates/sql/db.pyapp.pyconfig.pyview.py
在Apache生产环境下的webpy
Apache的配置
<IfModule wsgi_module>
WSGIScriptAlias /demo "D:/Program Files/Apache Software Foundation/Apache2.4/htdocs/webpy/demo.py/"
Alias /static "D:/Program Files/Apache Software Foundation/Apache2.4/htdocs/webpy/static"
AddType text/html .py
</IfModule>
webpy主应用文件app.py的修改
import os,sys
workingpath = os.path.dirname(__file__)
sys.path.append(workingpath)
这是把app.py所在的文件夹路径添加到python的环境变量中,这样在python就可以找得到。同样这个也是因为apache的根目录和web app的根目录是不一致的。如果只是import python自己的包或者安装的包(比如webpy)的话是不需要的。PS:如果__file__报错的话,请自行google找替代办法(就是使用sys.argv[0])。
下面是我的一个例子的demo.py(前面所说的app.py)
import sys, os, time
import urllib,urllib2,cookielib
import web
workingpath = os.path.dirname(__file__)
sys.path.append(workingpath)
from view import render
urls = (
'/index', 'index',
'/login','login',
)
app=web.application(urls,globals())
class index:
def GET(self):
return render.base("myview",render.news(10),"news")
class login:
def GET(self):
return render.base("myview",render.login(10),"login")
application = app.wsgifunc()
if __name__=="__main__":
app.internalerror=web.debugerror
app.run()
另外,在调试或者在修改代码之后,注意删除*.pyc文件。不然你可能找了半天都不知道是为什么你的修改没有反映到你的网站上。因为是动态的,所以apache并不需要重启。建议建立一个有下面代码的.bat文件在根目录下,每次点击一下就行了。
del *.pyc
完成了上面的就可以开始webpy的DIY之旅了。